本文主要是介绍叠筐问题 HDU 2074,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Description
需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
Input
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
Output
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
这个题目的本身不难,但是提交到OJ上 经常会WA PE,原因就是在题目理解的意思上没有弄懂;
“最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。”,题目的这一句的关键意思就在于以下两点:
1. 四个角都是空格
2.每个例子是在下一个例子出现时才有空格。
弄懂这个意思这个题目也就不难了 在第一次输入输出后 往后的每一次都在前面加一个换行符就解决了。
2.每个例子是在下一个例子出现时才有空格。
弄懂这个意思这个题目也就不难了 在第一次输入输出后 往后的每一次都在前面加一个换行符就解决了。
#include<stdio.h>
#include <string.h>
char d[85][85];
main ()
{int a,i,j,n=1;char b,c;while (scanf("%d %c %c",&a,&b,&c)!=EOF){if (n!=1)printf("\n");//关键就这一句处理 ,格式对了其他的就都很好解决。memset(d,0,sizeof(d));if (a==1)printf("%c\n",b);else {if (((a+1)/2)%2!=0){for(i=0;i<a;i++)for(j=0;j<a;j++)d[i][j]=b;for(i=0;i<a;i++)if(i%2!=0)for(j=i;j<a-i&&i;j++){d[i][j]=c;d[j][i]=c;d[a-i-1][j]=c;d[j][a-i-1]=c;}}else{for(i=0;i<a;i++)for(j=0;j<a;j++)d[i][j]=c;for(i=0;i<a;i++)if(i%2!=0)for(j=i;j<a-i&&i;j++){d[i][j]=b;d[j][i]=b;d[a-i-1][j]=b;d[j][a-i-1]=b;}}for(i=0;i<a;i++){for(j=0;j<a;j++)if((i==0&&j==0)||(i==0&&j==a-1)||(i==a-1&&j==0)||(i==a-1&&j==a-1))printf(" ");elseprintf("%c",d[i][j]);printf("\n");}}n++;}
}
这篇关于叠筐问题 HDU 2074的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!