#include<iostream>//这个就wrong ,想不明白为何。。。比赛的时候在这个题目悲剧了!!
#include<cstdio>
#include<cstring>
using namespace std;
int dir[4][2] = {{-1 ,0}, {0, -1}, {0, 1}, {1 , 0}};
int main()
{
int n, i, j;
char str[20];
int map[105][105];
while(scanf("%d", &n) != EOF)//后来比赛后听说这里直接用%S 读入,就可以过了,是数字的话判断下
//while(1)
{
// memset(map, 0, sizeof(map));
// scanf("%d", &n);
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
scanf("%d", &map[i][j]);
while(scanf("%s", str) != EOF)
{
if(strcmp(str, "SHOW") == 0)
{
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(j == n - 1)
printf("%d", map[i][j]);
else
printf("%d ", map[i][j]);
}
printf("/n");
}
printf("/n");
continue;
}
else if(strcmp(str, "NEIGHBORS") == 0)
{
int tt;
scanf("%d", &tt);
//getchar();
int x, y;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
{
if(map[i][j] == tt)
{
x = i;
y = j;
break;
}
}
int x1, y1;
int count = 0;
int num[20];
for( i= 0; i < 4; i++)
{
x1 = x + dir[i][0];
y1 = y + dir[i][1];
if(x1 >= 0 && x1 < n && y1 >= 0 && y1 < n)
{
num[count++] = map[x1][y1];
//if(i != 3)
// printf("%d ",map[x1][y1]);//这里格式有错误
//else
//printf("%d/n",map[x1][y1]);
}
}
for(i = 0; i < count; i++)//这里PE了好久。。separated by spaces谢文策让我看的这句话
{
if(i != count - 1)
printf("%d ", num[i]);
else
printf("%d/n", num[i]);
}
//printf("/n");
}
}
}
}
AC code:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int dir[4][2] = {{-1 ,0}, {0, -1}, {0, 1}, {1 , 0}};
int main()
{
int n, i, j, x;
char str[20];
int map[105][105];
int x0, y0;
//while(scanf("%d", &n) != EOF)
//while(1)
while(scanf("%s", str) != EOF)
{
// memset(map, 0, sizeof(map));
// scanf("%d", &n);
if(str[0] >= '0' && str[0] <= '9')
{
n = 0;
for(i = 0; i < strlen(str); i++)
{
n = 10 * n + str[i] - '0';
}
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
{
scanf("%d", &map[i][j]);
if(map[i][j] == 0)
{
x0 = i;
y0 = j;
}
}
}
//while(scanf("%s", str) != EOF)
// {
else if(strcmp(str, "SHOW") == 0)
{
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(j == n - 1)
printf("%d", map[i][j]);
else
printf("%d ", map[i][j]);
}
printf("/n");
}
printf("/n");
continue;
}
else
//if(strcmp(str, "NEIGHBORS") == 0)
{
int tt;
scanf("%d", &tt);
//getchar();
int x, y;
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
{
if(map[i][j] == tt)
{
x = i;
y = j;
break;
}
}
int x1, y1;
int num = 0;
int ss[10];
for( i= 0; i < 4; i++)
{
x1 = x + dir[i][0];
y1 = y + dir[i][1];
if(x1 >= 0 && x1 < n && y1 >= 0 && y1 < n)
{
ss[num++] = map[x1][y1];
// if(x1 == n - 1 || y1 == n - 1)
// printf("%d",map[x1][y1]);
// else
//printf("%d ",map[x1][y1]);
}
}
for(i = 0; i < num; i++)
if(i != num - 1)
printf("%d ", ss[i]);
else
printf("%d/n", ss[i]);
// }
}
}
}