疊筐
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輸出疊在一起的筐圖案,中心花色與外筐花色字元從內層起交錯相疊,多筐相疊時,最外筐的角總是被打磨掉。疊筐與疊筐之間應有一行間隔。
解題:
題目不難理解,答案卻很難理解。要輸出這樣的格式不難,但是會PE、會WA。關鍵在於題目未說明四個角是空格還是結束符,每個例子是不是都有間隔?
1. 四個角都是空格
2.每個例子是在下一個例子出現才有空格。
#include <iostream><br />#include <iomanip><br />using namespace std;<br />int main()<br />{<br />int n,i,j,p,q=0,l;char a,b,c,s[81][81];<br />while (cin>>n>>a>>b)<br />{<br />for (i=0;i<81;i++)<br />for (j=0;j<81;j++)<br />s[i][j]='/0';<br />l=n;<br />if (n==1)<br />{<br />if (q)<br />cout<<endl;<br />cout<<a<<endl;<br />continue;<br />}<br />if (q)<br />cout<<endl;<br />if ((n/2)%2==0)<br />{<br />c=a;<br />a=b;<br />b=c;<br />}<br />for (i=0;i<n;i++)<br />for (j=0;j<l;j++)<br />{<br />if (i==j && i%2==0)<br />{<br />for (p=i;p<l;p++)<br />{<br />s[p][j]=b;<br />s[j][p]=b;<br />s[p][n-1-j]=b;<br />s[n-1-j][p]=b;<br />}<br />l--;<br />}<br />else if (i==j && i%2!=0)<br />{<br />for (p=i;p<l;p++)<br />{<br />s[p][j]=a;<br />s[j][p]=a;<br />s[p][n-1-j]=a;<br />s[n-1-j][p]=a;<br />}<br />l--;<br />}<br />i++;<br />}<br />s[0][0]=' ';s[n-1][0]=' ';s[0][n-1]=' ';s[n-1][n-1]=' ';<br />for (i=0;i<n;i++)<br />cout<<s[i]<<endl;<br />q++;<br />}<br />}