您的位置:首页 > 其它

UVA - 232 Crossword Answers

2016-07-08 19:14 302 查看

UVA - 232 Crossword Answers

题目大意:给定一个网格 确定一些空格 和 字母 按从到右 从上到下的顺序 给每个词语编号 然后横向输出和纵向输出

解题思路:顺序编号完 输出即可

#include <stdio.h>
#include <iomanip>
using namespace std;
int main(){
char a[105][105];
int b[105][105];
int n,m;
int t = 1;
int p = 0;
int s = 1;
while (1){
s = 1;
scanf("%d", &n);
if (n == 0) break;
scanf("%d", &m);
getchar();
for (int i = 0;i < n;i++){
for (int j = 0;j < m;j++)
scanf("%c", &a[i][j]);
getchar();
}
for(int i = 0;i < n;i++)
for (int j = 0;j < m;j++)
if (i == 0 && a[i][j] != '*'  || j == 0 && a[i][j] != '*' || a[i-1][j] == '*' && a[i][j] != '*'  || a[i][j-1] == '*' && a[i][j] != '*'){
b[i][j] = s;
s++;

}
if (t != 1) printf("\n");
printf("puzzle #%d:\n", t);
t++;
printf("Across\n");
for (int i = 0; i < n ;i++){
for (int j = 0;j < m;j++){
if ( j == 0 && a[i][j] != '*'  || a[i][j-1] == '*' && a[i][j] != '*' ) {
printf("%3d.", b[i][j]);
while(a[i][j] != '*' && j < m)
printf("%c", a[i][j++]);
printf("\n");
}
}

}
int l = 1;
printf("Down\n");
for (int  i = 0; i < n;i++)
for (int j = 0; j < m; j++ ){
if (i == 0 && a[i][j] != '*'  || a[i-1][j] == '*' && a[i][j] != '*'){
printf("%3d.", b[i][j]);
//  if (a[i][j] != '*')
//      printf("%c", a[i][j]);
for (int k = i;k < n;k++){
if ( a[k][j] == '*')
break;

//b[k][j] = 0;
if ( a[i][j] != '*')
printf("%c", a[k][j]);
}
printf("\n");
}

}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: