Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
各位大牛,帮忙看一下,为什么老是wa啊!我用的是迭代#include<iostream> #include <math.h> using namespace std; int main() { char a2[3][3]={{'X',' ','X'},{' ','X',' '},{'X',' ','X'}}; char a[800][800]={' '},a3[300][300]={' '}; int n,i,j,k,t1,t2; while (cin>>n) { if(n==-1) break; if(n==1) { cout<<"X"<<endl; cout<<"-"<<endl; continue; } if(n==2) { for(i=0;i<3;i++) { for(j=0;j<3;j++) cout<<a2[i][j]; cout<<endl; } cout<<"-"<<endl; continue; } for(i=0;i<3;i++) for(j=0;j<3;j++) a3[i][j]=a2[i][j]; for (i=3;i<=n;i++) { t1=powf(3,i-1); t2=t1/3; for (j=0;j<t2;j++) for(k=0;k<t2;k++) { a[j+t2][k+t2]=a3[j][k]; a[j+2*t2][k+2*t2]=a3[j][k]; a[j][k]=a3[j][k]; }//到此只生成矩阵的一半,下面通过两次转置得到完整的输出图形 for(j=0;j<=t1/2;j++)//转置一,处理上半部分 for(k=0;k<t1/2;k++) a[j][t1-k-1]=a[j][k]; for(j=t1/2+1;j<t1;j++)//转置二,处理下半部分 for(k=0;k<t1/2;k++) a[j][k]=a[j][t1-k-1]; if(i!=n) for(j=0;j<300;j++) for(k=0;k<300;k++) a3[j][k]=a[j][k]; } t1=powf(3,n-1); for(i=0;i<t1;i++) { for(j=0;j<t1;j++) cout<<a[i][j]; cout<<endl; } cout<<"-"<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator