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;
}