本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!