Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

化学课代表,1A留念

Posted by vjubge4 at 2019-06-22 10:12:47 on Problem 1099
#include<cstdio>
#include<cstring>
using namespace std;
char field[100][100];
int num[11][11];
int N;
int main(){
    int C = 0;
    while(true){
        scanf("%d", &N);
        if(N == 0){
            break;
        }
        int W = (N - 1) * 3 + N + 4;
        int H = (N - 1) * 3 + N;
        memset(field, ' ', sizeof(field));
        for(int i = 0; i < H; i ++){
            field[i][W] = 0;
        }
        for(int i = 0; i < N; i ++){
            for(int j = 0; j < N; j ++){
                scanf("%d", &num[i][j]);
            }
        }
        for(int i = 0; i < N; i ++){
            for(int j = 0; j < N; j ++){
                int loc_x = 4 * i;
                int loc_y = 2 + j * 4;
                field[loc_x][loc_y] = 'O';
                if(num[i][j] == 1){
                    field[loc_x][loc_y - 1] = field[loc_x][loc_y + 1] = '-';
                    field[loc_x][loc_y - 2] = field[loc_x][loc_y + 2] = 'H';
                }
                if(num[i][j] == -1){
                    field[loc_x - 1][loc_y] = field[loc_x + 1][loc_y] = '|';
                    field[loc_x - 2][loc_y] = field[loc_x + 2][loc_y] = 'H';
                }
            }
        }
        for(int i = 0; i < N; i ++){
            for(int j = 0; j < N; j ++){
                int loc_x = 4 * i;
                int loc_y = 2 + j * 4;
                if(num[i][j] == 0){
                    int loc_1_x = loc_x, loc_1_y = loc_y - 2;
                    int loc_2_x = loc_x, loc_2_y = loc_y - 1;
                    bool flag = false;
                    if(loc_1_x >= 0 && loc_1_x < H && loc_1_y >= 0 && loc_1_y < W && field[loc_1_x][loc_1_y] == ' '){
                        field[loc_1_x][loc_1_y] = 'H';
                        field[loc_2_x][loc_2_y] = '-';
                        flag = true;
                    }
                    loc_1_x = loc_x, loc_1_y = loc_y + 2;
                    loc_2_x = loc_x, loc_2_y = loc_y + 1;
                    if(!flag && loc_1_x >= 0 && loc_1_x < H && loc_1_y >= 0 && loc_1_y < W && field[loc_1_x][loc_1_y] == ' '){
                        field[loc_1_x][loc_1_y] = 'H';
                        field[loc_2_x][loc_2_y] = '-';
                    }
                    loc_1_x = loc_x - 2, loc_1_y = loc_y;
                    loc_2_x = loc_x - 1, loc_2_y = loc_y;
                    flag = false;
                    if(loc_1_x >= 0 && loc_1_x < H && loc_1_y >= 0 && loc_1_y < W && field[loc_1_x][loc_1_y] == ' '){
                        field[loc_1_x][loc_1_y] = 'H';
                        field[loc_2_x][loc_2_y] = '|';
                        flag = true;
                    }
                    loc_1_x = loc_x + 2, loc_1_y = loc_y;
                    loc_2_x = loc_x + 1, loc_2_y = loc_y;
                    if(!flag && loc_1_x >= 0 && loc_1_x < H && loc_1_y >= 0 && loc_1_y < W && field[loc_1_x][loc_1_y] == ' '){
                        field[loc_1_x][loc_1_y] = 'H';
                        field[loc_2_x][loc_2_y] = '|';
                    }
                }
            }
        }
        printf("Case %d:\n\n", ++ C);
        for(int i =0; i < W + 2; i ++){
            putchar('*');
        }
        putchar('\n');
        for(int i =0; i < H; i ++){
            printf("*%s*\n", field[i]);
        }
        for(int i =0; i < W + 2; i ++){
            putchar('*');
        }
        putchar('\n');
        putchar('\n');
    }
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator