ZOJ-1156

41 篇文章 0 订阅

纯苦力英语阅读加模拟题。。没啥技术含量,考验基础coding能力。。还是调了我一个多小时,晕死了,各种逻辑错误,赶紧AC掉跑步去了

#include<stdio.h>
#include<string.h>

static void fill(int index, int *a, int row, int col, int d, int map[16][16])
{
	int i, j, k, r, c;
	if (a[index] != -1)
	{
		for (i = row; i < row + d; i++)
			for (j = col; j < col + d; j++)
				map[i][j] = a[index];
		return;
	}

	for (k = 1; k <= 4; k++)
	{
		if (k == 1)
		{
			r = row;
			c = col;
		}
		else if (k == 2)
		{
			r = row;
			c = col + d / 2;
		}
		else if (k == 3)
		{
			r = row + d / 2;
			c = col;
		}
		else
		{
			r = row + d / 2;
			c = col + d / 2;
		}
		fill(4 * index + k, a, r, c, d / 2, map);
	}
}

int main()
{
	int N, t, a[400], src[16][16], dst[16][16], res[256];
	scanf("%d", &N);
	for (t = 0; t < N; t++)
	{
		if (t)
			putchar('\n');
		int C, c;
		scanf("%d", &C);
		for (c = 0; c < C; c++)
		{
			if (c)
				putchar('\n');
			int n, m, k, v;
			scanf("%d", &n);
			memset(a, -1, sizeof(a));
			scanf("%d", &m);
			while (m--)
			{
				scanf("%d %d", &k, &v);
				a[k] = v;
			}
			fill(0, a, 0, 0, n, src);
			memset(a, -1, sizeof(a));
			scanf("%d", &m);
			while (m--)
			{
				scanf("%d %d", &k, &v);
				a[k] = v;
			}
			fill(0, a, 0, 0, n, dst);

			int i, j;
			for (i = 0; i < n; i++)
				for (j = 0; j < n; j++)
					res[src[i][j]] = dst[i][j];

			printf("Case %d\n\n", c + 1);
			for (i = 0; i < n * n; i++)
			{
				printf("%4d", res[i]);
				if ((i + 1) % n == 0)
					putchar('\n');
			}
		}
	}
	return 0;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值