叠筐 HDU - 2074
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了叠筐 HDU - 2074相关的知识,希望对你有一定的参考价值。
找规律的模拟题,细节较多。网上推出的有公式。
除了公式之外,还可以这样看。
这个花框是里外交替的。假设 外 1 层为A的话,接下来外2层就是B,再接下来,外3层为A.....以此类推
层数 t ∈ [ 0,(T+1)/2 )
当 t 为奇数 时 ,最外层为 A ,当 t 为偶数时 最外层为B ,然后层层交替。
处理完之后,再挖去四个角。以空格覆盖之。完毕。
注意事项:
(1)由于数据有多组,注意str字符数组的初始化........
(2)当 N==1 时单独输出。
(3)函数调用里面的str[N-1][i]和str[i][N-1],这里必须N-1。(因为下标从0开始)
(4)函数调用 内层的四个for循环结束后,需要T--,N--;
下面附上代码
#include<stdio.h> #include<string.h> int N; char str[100][100]; char x,y; void check(int ceng,char a,char b) // a 是外层 { int T = ceng-1,xx = N; char c; for(int k = 0; k < ceng; k++) { c = T % 2 ? a : b; for(int i = k; i < N; i++) // 上 str[k][i] = c; for(int i = k; i < N; i++) // 下 str[N-1][i] = c; for(int i = k; i < N; i++) // 左 str[i][k] = c; for(int i = k; i < N; i++) // 右 str[i][N-1] = c; T--; // 推算下一层的字符是谁 N--; // 本层输完了,减一,输它上面的一层 } str[0][0] = ‘ ‘; str[0][xx-1] = ‘ ‘; str[xx-1][0] = ‘ ‘; str[xx-1][xx-1] = ‘ ‘; for(int i = 0; i < xx; i++) printf("%s\n",str[i]); } int main() { int ok = 0; while(scanf(" %d %c %c",&N,&x,&y)!= EOF) { memset(str,0,sizeof(str)); if(ok) printf("\n"); if(N == 1) { printf("%c\n",x); continue; } int t = (N + 1) / 2; check(t,y,x); ok = 1; } return 0; }
以上是关于叠筐 HDU - 2074的主要内容,如果未能解决你的问题,请参考以下文章
hdu2074java@@@ @WWW@ @W@W@ @WWW@ @@@