HDU 2074 叠筐 (字符处理)

叠筐

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3272    Accepted Submission(s): 797

Problem Description
需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
 

 

Input
输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
 

 

Output
输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
 

 

HDU 2074 叠筐 (字符处理)_第1张图片

解题:

      题目不难理解,答案却很难理解。要输出这样的格式不难,但是会PE、会WA。关键在于题目未说明四个角是空格还是结束符,每个例子是不是都有间隔?

      1. 四个角都是空格
      2.每个例子是在下一个例子出现才有空格。

#include <iostream> #include <iomanip> using namespace std; int main() { int n,i,j,p,q=0,l;char a,b,c,s[81][81]; while (cin>>n>>a>>b) { for (i=0;i<81;i++) for (j=0;j<81;j++) s[i][j]='/0'; l=n; if (n==1) { if (q) cout<<endl; cout<<a<<endl; continue; } if (q) cout<<endl; if ((n/2)%2==0) { c=a; a=b; b=c; } for (i=0;i<n;i++) for (j=0;j<l;j++) { if (i==j && i%2==0) { for (p=i;p<l;p++) { s[p][j]=b; s[j][p]=b; s[p][n-1-j]=b; s[n-1-j][p]=b; } l--; } else if (i==j && i%2!=0) { for (p=i;p<l;p++) { s[p][j]=a; s[j][p]=a; s[p][n-1-j]=a; s[n-1-j][p]=a; } l--; } i++; } s[0][0]=' ';s[n-1][0]=' ';s[0][n-1]=' ';s[n-1][n-1]=' '; for (i=0;i<n;i++) cout<<s[i]<<endl; q++; } }

你可能感兴趣的:(c,工作,ini,input,output)