0WA求调
  • 板块P1101 单词方阵
  • 楼主cgxd
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/8 09:36
  • 上次更新2024/7/8 11:09:59
查看原帖
0WA求调
1272259
cgxd楼主2024/7/8 09:36
#include<bits/stdc++.h>
using namespace std;
const string ans = " yizhong";
int n;
vector<string> v(1);
bitset<105> bs[105];
bool dfs(int x, int y, int m, int f){
	if(x < 1 or x > n or y < 1 or y > n)
		return 0;
	if(v[x][y] == ans[m]){
		switch(m){
			case 7:{
				bs[x].set(y);
				return 1;
			}default:{
				switch(f){
					case 1:{
						if(dfs(x - 1, y - 1, m + 1, 1)){
							bs[x].set(y);
							return 1;
						}return 0;
					}case 2:{
						if(dfs(x - 1, y, m + 1, 2)){
							bs[x].set(y);
							return 1;
						}return 0;
					}case 3:{
						if(dfs(x - 1, y + 1, m + 1, 3)){
							bs[x].set(y);
							return 1;
						}return 0;
					}case 4:{
						if(dfs(x, y - 1, m + 1, 4)){
							bs[x].set(y);
							return 1;
						}return 0;
					}case 6:{
						if(dfs(x, y + 1, m + 1, 6)){
							bs[x].set(y);
							return 1;
						}return 0;
					}case 7:{
						if(dfs(x + 1, y - 1, m + 1, 7)){
							bs[x].set(y);
							return 1;
						}return 0;
					}case 8:{
						if(dfs(x + 1, y, m + 1, 8)){
							bs[x].set(y);
							return 1;
						}return 0;
					}case 9:{
						if(dfs(x + 1, y + 1, m + 1, 9)){
							bs[x].set(y);
							return 1;
						}return 0;
					}case 5:{
						if(dfs(x - 1, y - 1, m + 1, 1))
							bs[x].set(y);
						if(dfs(x - 1, y, m + 1, 2)) 
							bs[x].set(y);
						if(dfs(x - 1, y + 1, m + 1, 3)) 
							bs[x].set(y);
						if(dfs(x, y - 1, m + 1, 4)) 
							bs[x].set(y);
						if(dfs(x, y + 1, m + 1, 6)) 
							bs[x].set(y);
						if(dfs(x + 1, y - 1, m + 1, 7)) 
							bs[x].set(y);
						if(dfs(x + 1, y, m + 1, 8)) 
							bs[x].set(y);
						if(dfs(x + 1, y + 1, m + 1, 9)) 
							bs[x].set(y);
						break;
					}
				}
			}
		}
	}return 0;
}signed main(){
	scanf("%d", &n);
	for(int i = 1; i <= n; ++i){
		string s;
		for(int i = 0; i <= n; ++i)
			s.push_back(getchar());
		v.push_back(s);
	}for(int i = 1; i <= n; ++i){
		for(int j = 1; j <= n; ++j)
			dfs(i, j, 1, 5);
	}for(int i = 1; i <= n; ++i){
		for(int j = 1; j <= n; ++j){
			if(bs[i][j])
				putchar(v[i][j]);
			else
				printf("*");
		}printf("\n");
	}return 0;
}
2024/7/8 09:36
加载中...