站外题求助qwq
  • 板块学术版
  • 楼主Amberhart
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/30 23:30
  • 上次更新2023/11/3 00:15:25
查看原帖
站外题求助qwq
514327
Amberhart楼主2023/8/30 23:30

题目

#include<bits/stdc++.h>
using namespace std;
char mp[10][10];
int r[100][3];  
int n,cnt,num;
bool fun(int x,int y,char k){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(i==x&&mp[i][j]==k){
				return false;
			}
			if(j==y&&mp[i][j]==k){
				return false;
			}
			if(i-j==x-y&&mp[i][j]==k){
				return false;
			}
			if(i+j==x+y&&mp[i][j]==k){
				return false;
			}
		}
	}
	return true;
}
void dfs(int k){
	for(int i=1;i<=n;i++){
		if(fun(r[k][1],r[k][2],i+'0')){
			mp[r[k][1]][r[k][2]]=i+'0';
			if(k==num){
				cnt++;
    		}else{
				dfs(k+1);
			}
			mp[r[k][1]][r[k][2]]=0;
		}
	}
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>mp[i][j];
			if(mp[i][j]=='*'){
				r[++num][1]=i;
				r[num][2]=j;
			}
		}
	}
	dfs(1);
	printf("%d",cnt);
	return 0;
}

TLE了(哭

有帮助的话,小号悬一个关注

2023/8/30 23:30
加载中...