uva232题,纵横字谜(crossword answer),在自己电脑上测试一直是对的,用平台给的debug数据也一直是对的,在oj上提交却一直WA,求帮忙。
#include<bits/stdc++.h>
using namespace std;
typedef struct
{
int num;
bool mon;
char c;
}NODE;
NODE node[15][15];
int main()
{
int row,col;
int flag = 1;
while(cin >> row&&row)
{
cin >> col;
for(int i = 0;i<row;i++)
{
for(int j= 0;j<col;j++)
{
node[i][j].num = 0;
node[i][j].mon = false;
}
}
char tem;
getchar();
int number = 1;
for(int i = 0;i<row;i++)//一次性找完黑色块,输入,以及加标识
{
for(int j = 0;j<col;j++)
{
cin >> tem;
node[i][j].c = tem;
if(node[i][j].c == '*'&&((i*j)!=((row-1)*(col-1))))
{
if(i == row-1)
{
node[i][j+1].mon = true;
continue;
}
if(j == col-1)
{
node[i+1][j].mon = true;
continue;
}
if(node[i+1][j].c != '*')node[i+1][j].mon = true;
if(node[i][j+1].c != '*')node[i][j+1].mon = true;
}
if((i==0&&(node[i][j].c!='*'))||(j==0&&(node[i][j].c!='*')))
{
node[i][j].num = number++;
continue;
}
if(node[i][j].mon&&(node[i][j].c!='*')) node[i][j].num = number++;
}
}
if(flag!=1) cout << '\n';
cout << "puzzle #" << flag++ <<endl << "Across" << endl;
for(int i = 0;i<row;i++)
{
for(int j = 0;j<col;j++)
{
if(node[i][j].num != 0)
{
printf("%2d.",node[i][j].num);
for(int k = j;(k<col)&&node[i][k].c!='*';k++)
{
cout << node[i][k].c;
j = k;
}
cout << '\n';
}
}
}
cout << "Down" << endl;
for(int x = 0;x<row;x++)
{
for(int j = 0;j<col;j++)
{
if(node[x][j].num !=0)
{
printf("%2d.",node[x][j].num);
for(int k = x;(k<row)&&node[k][j].c!='*';k++)
{
node[k][j].num = 0;
cout << node[k][j].c;
}
cout << endl;
}
}
}
}
return 0;
}