TLE求调
查看原帖
TLE求调
1127070
yangyi11楼主2024/10/19 16:50

我太蒟蒻了,TLE只有70,求大佬优化

#include<bits/stdc++.h>
using namespace std;
int n,s;
char a[20][20];
int f[20][20];
void fang(int x,int y){
	for(int i=1;i<=n;i++){
		f[x][i]=1;
		f[i][y]=1;
		if(y-x+i>0&&y-x+i<=n){
			f[i][y-x+i]=1;
		}
		if(y+x-i>0&&y+x-i<=n){
			f[i][y+x-i]=1;
		}
	}
}
void dfs(int x){
	if(x==n+1){
		s++;
		return;
	}else{
		for(int i=1;i<=n;i++){
			if(a[x][i]=='*'&&f[x][i]==0){
				int b[20][20];
				memcpy(b,f,sizeof(b));
				fang(x,i);
				dfs(x+1);
				memcpy(f,b,sizeof(f));
			} 
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
		}
	}	 
	dfs(1);
	cout<<s;
	return 0;
} 
2024/10/19 16:50
加载中...