題目大意:
題目鏈接:https://www.luogu.org/problemnew/show/P5461
一個的正方形,每次從中間將這個正方形分爲4個小正方形,其中左上角的小正方形全部爲0,另外三個小正方形按照同樣的方式繼續分割。輸出這個正方形。
思路:
這是洛谷7月月賽的T1簽到題。其他題目看都沒看
一道非常基礎的分形。每次簡單維護一下就可以了。具體方法應該不用說了吧。。。
沒有打遞歸,直接枚舉的,打的很醜。
但是比賽時只有,賽後重交源代碼就AC了,後來看kkk說是什麼奇怪的bug,算了就劃一下水就不管了。
寫了一大堆廢話↑
代碼:
#include <cstdio>
using namespace std;
const int N=1100;
int n,a[N][N];
int main()
{
//前方巨醜
scanf("%d",&n);
a[1<<n][1<<n]=a[1<<n][(1<<n)-1]=a[(1<<n)-1][1<<n]=1;
for (int k=2;k<=n;k++)
{
for (int i=(1<<n)-(1<<k)+1;i<=(1<<n)-(1<<k-1);i++)
for (int j=n-(1<<k-1)+1;j<=(1<<n);j++)
a[i][j]=a[i+(1<<k-1)][j];
for (int i=(1<<n)-(1<<k-1)+1;i<=(1<<n);i++)
for (int j=(1<<n)-(1<<k)+1;j<=(1<<n)-(1<<k-1);j++)
a[i][j]=a[i][j+(1<<k-1)];
}
for (int i=1;i<=(1<<n);i++,putchar(10))
for (int j=1;j<=(1<<n);j++)
printf("%d ",a[i][j]);
}