题目:https://www.luogu.com.cn/problem/UVA232
看题目直接点链接
。。想了好多办法结果都有问题,在这张的题里面主要用数组,,思维太差了。。
#include<iostream> #include<cstring> using namespace std; // 行号,列号,样例号,字母序号,行下标,列下标,用于临时遍历的列下标,上一个单词访问完后的位置 int r,c,count=1,t,i,j,k,pr; char g[11][11];//网格 int p[11][11];//对应网格中单词的序号 int main(){ while(scanf("%d",&r) && r!=0){ scanf("%d",&c); t = 0; if(count>1) putchar('\n'); printf("puzzle #%d:\nAcross\n",count++); for(i = 0;i<r;i++){ scanf("%s",g[i]); pr = 0; for(j = 0;j<c;j++){ if(g[i][j] == '*') continue; if(i == 0 || g[i-1][j] == '*' || j == 0 || g[i][j-1] == '*') t++;p[i][j] = t; if(j>=pr){ printf("%3d.",t); for(k = j;k<c&&g[i][k]!='*';k++){ putchar(g[i][k]); } pr = k+1; putchar('\n'); } } } printf("Down\n"); for(i = 0;i<r;i++){ for(j = 0;j<c;j++){ if(!p[i][j]) continue; printf("%3d.",p[i][j]); for(k = i;k<r&&g[k][j] != '*';k++){ p[k][j] = 0; putchar(g[k][j]); } putchar('\n'); } } } return 0; }