Crossword Answers
UVA - 232
题目传送门
直接按照要求寻找遍历一遍即可
AC代码:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
char s[15][15];
int num[15][15];
int n,m;
void Init()
{int cnt=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(s[i][j]=='*')continue;if(i==0||j==0||s[i-1][j]=='*'||s[i][j-1]=='*'){cnt++;num[i][j]=cnt;}}}
}
void Across()
{for(int i=0;i<n;i++){for(int j=0;j<m;){if(s[i][j]!='*'){printf("%3d.",num[i][j]);while(s[i][j]!='*'){printf("%c",s[i][j]);j++;if(j>=m)break;}printf("\n");}elsej++;}}
}
void Down()
{bool vis[15][15];ms(vis);for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(vis[i][j]==true||s[i][j]=='*')continue;printf("%3d.",num[i][j]);int t=i;while(s[t][j]!='*'&&t>=0&&t<n&&j>=0&&j<m){printf("%c",s[t][j]);vis[t][j]=true;t++;if(t>n)break;}printf("\n");}}
}
int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);int cnt=0;while(scanf("%d",&n)&&n){cnt++;if(cnt!=1)printf("\n");scanf("%d",&m);for(int i=0;i<n;i++)scanf("%s",s[i]);ms(num);Init();printf("puzzle #%d:\n",cnt);printf("Across\n");Across();printf("Down\n");Down();}return 0;
}