FAFU-OJ 1408 摆花

来源:互联网 发布:淘宝抢票卖家靠谱吗 编辑:程序博客网 时间:2024/04/30 00:58
题目连接:http://acm.fafu.edu.cn/problem.php?id=1408
方法一:开一个数组char s[1000][1000]保存图形,再打印。
#include <stdio.h>char s[999][999];int main(){int i,j,q,n;scanf("%d",&n);char c = 'A' + (n+1)/2%26;int t = (n+1)/2;for(q = 1; q <= t; q++){if(c == 'A')c = 'Z';elsec--;for(i = q; i <= n+1-q; i++){s[q][i] =s[n+1-q][i] = s[i][n+1-q] = s[i][q] = c;}}for(i = 1; i <= n; i++){for(j = 1; j <= n; j++)printf(" %c",s[i][j]);printf("\n");}return 0;}
这道题的另一种写法:(不用开数组,只要找到每个点的规律,用i,j表示出来,直接打印可以省去很多memory)
#include <stdio.h>int n;int t;char print(int x,int y){char c;int min;x = x>t?2*t-x:x;y = y>t?2*t-y:y;min = (x>y)?y:x;c = 'A'+(t-min)%26;return c;}int main(){scanf("%d",&n);int i,j; t = (n+1)/2;for(i = 1; i <= n; i++){for(j = 1; j <= n; j++)printf(" %c",print(i,j));printf("\n");}return 0;}



0 0
原创粉丝点击