Hduoj2074【水题】

来源:互联网 发布:看门狗低配优化补丁 编辑:程序博客网 时间:2024/04/28 01:33
/*叠筐Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12820    Accepted Submission(s): 3303Problem Description需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。 Input输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符; Output输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。 Sample Input11 B A5 @ W Sample Output AAAAAAAAA ABBBBBBBBBAABAAAAAAABAABABBBBBABAABABAAABABAABABABABABAABABAAABABAABABBBBBABAABAAAAAAABAABBBBBBBBBA AAAAAAAAA  @@@ @WWW@@W@W@@WWW@ @@@  Authorqianneng Source浙江工业大学网络选拔赛 */ #include<stdio.h>int main(){int n;char a, b, s[88][88];int ok = 0;while(scanf("%d %c %c", &n, &a, &b) != EOF){if(ok)printf("\n");if(n == 1){printf("%c\n", a);ok = 1;continue;}int k = 1, flag = 1;for(int i = n/2+1, j = n/2+1; i >= 1 ; i--, j--){int x,y;for( x = i, y = j; y <= j+k-1; y++)//r{if(flag)s[x][y] = a;elses[x][y] = b;}y--;for( ; x <= i+k-1; x++)//down{if(flag)s[x][y] = a;elses[x][y] = b;}x--;for( ; y >= j; y--){if(flag)s[x][y] = a;elses[x][y] = b;}y++;for(; x > i; x --){if(flag)s[x][y] = a;elses[x][y] = b;}if(flag)flag = 0;elseflag = 1;k += 2; }for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++){if(i == 1 && j == 1)printf(" ");else if(i == 1 && j == n)printf(" ");else if( i == n && j == n)printf(" ");else if(i == n && j == 1)printf(" ");elseprintf("%c", s[i][j]);}printf("\n");}ok = 1;}return 0;}

题意 :给定一个数字两个字符,输出特定的图形。

注意:边界以及n=1的情况

0 0
原创粉丝点击