洛谷 1498 南蛮图腾——模拟
题目:https://www.luogu.org/problemnew/show/P1498
每多1,长和宽翻倍。先把图案移到下面,同时把下面的右边也弄上,然后把上面清空,找准位置copy下面的图案。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=1030; int A,n,m; char a[N][N<<1]; void init() { n=2;m=4; a[1][1]=a[1][4]=' ';a[1][2]=a[2][1]='/'; a[1][3]=a[2][4]='\\';a[2][2]=a[2][3]='_'; } int main() { init(); scanf("%d",&A); while(--A) { int yn=n,ym=m;n<<=1;m<<=1; for(int i=yn+1;i<=n;i++) for(int j=1;j<=ym;j++) a[i][j]=a[i-yn][j],a[i][j+ym]=a[i][j]; for(int i=1;i<=yn;i++) for(int j=1;j<=m;j++)a[i][j]=' '; for(int i=1;i<=yn;i++) for(int j=(ym>>1)+1,k=1;k<=ym;j++,k++) a[i][j]=a[i+yn][k]; } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++)printf("%c",a[i][j]); if(i!=n)printf("\n"); } return 0; }