纯苦力英语阅读加模拟题。。没啥技术含量,考验基础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;
}