20260814 P5461 赦免战俘
复习题
P5461 赦免战俘 - 洛谷
#include<stdio.h>
//定义全局数组,同时可以实现更大的数组
int arr[1025][1025];
int fill(int x, int y, int size)//填充函数,用于每一个块的战俘的赦免(即填充1)
{
if (size == 1)
{
arr[x][y] = 1;
return 0;
}
//直到所有块的size==1,停止递归
//以上为填充1,以下为递归部分
int half = size / 2;
int i = 0;
int j = 0;
for (i = x;i < x+half;i++)
{
for (j = x;j < x + half;j++)
{
arr[x][y] = 0;
}
}
fill(x, y + half, half);//右上
fill(x + half, y, half);//左下
fill(x + half, y + half, half);//右下
}
int main(void)
{
int n = 0;
scanf("%d", &n);
//求取2的n次方,使用位操作简化
int size = 1 << n;
fill(0,0,size);
int i = 0;
int j = 0;
//以下用于打印结果
for (i = 0;i < size;i++)
{
for (j = 0;j < size;j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
//这是return 0,用于结束函数(认真)
return 0;
}