UVa232

2024-05-02 21:18
文章标签 uva232

本文主要是介绍UVa232,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[题目描述]

传送门

[题目分析]

简单的模拟,注意细节

[AC代码]

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<climits>
#include<cctype>
#include<queue>
#include<set>using namespace std;typedef long long ll;
const int INF=0x3f3f3f3f;
const int MAXN=15;int r,c,tot;
char s[MAXN][MAXN];
int num[MAXN][MAXN];
bool vis[MAXN][MAXN];
int Case=0;int main()
{int u,v;while(~scanf("%d",&r) && r){tot=0;memset(num,0,sizeof(num));scanf("%d",&c);for(int i=0;i<r;i++){scanf("%s",s[i]);}for(int i=0;i<r;i++){for(int j=0;j<c;j++){u=i; v=j;if(s[u][v]=='*') continue;if(u-1<0 || v-1<0 ||  s[u-1][v]=='*' || s[u][v-1]=='*'){num[u][v]=++tot;}}}if(Case) printf("\n");printf("puzzle #%d:\n",++Case);printf("Across\n");for(int i=0;i<r;i++){for(int j=0;j<c;j++){if(num[i][j]){printf("%3d.",num[i][j]);v=j;while(v<c && s[i][v]!='*'){printf("%c",s[i][v]);v++;}printf("\n");j=v;}}}memset(vis,0,sizeof(vis));printf("Down\n");for(int i=0;i<r;i++){for(int j=0;j<c;j++){if(num[i][j] && !vis[i][j]){printf("%3d.",num[i][j]);u=i;while(u<r && s[u][j]!='*'){vis[u][j]=true;printf("%c",s[u][j]);u++;}printf("\n");}}}}return 0;
}

这篇关于UVa232的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/955154

相关文章

纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994,UVa232)

习题3-6 纵横字谜的答案(Crossword Answers, ACM/ICPC World Finals 1994,UVa232)         输入一个r行c列(1≤r,c≤10)的网格,黑格用“*”表示,每个白格都填有一个字母。如果一个白格的左边相邻位置或者上边相邻位置没有白格(可能是黑格,也可能出了网格边界),则称这个白格是一个起始格。 首先把所有起始格按照从上到下、从左到右的顺序编