暴搜74pts求优化
查看原帖
暴搜74pts求优化
1245629
woscxk楼主2024/5/22 12:49

rt

#include<bits/stdc++.h>
using namespace std;
bool check(int m[],int s){
    bool b[14]={};
    for(int i=0;i<s;i++){
        if(b[i])return 0;
        else b[i]=1;
    }for(int i=0;i<s;i++){
    	for(int j=i+1;j<s;j++){
    		if(abs(m[i]-m[j])==abs(i-j))return 0;
		}
	}return 1;
}
int main(){
    int m[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19},n,fac=1;
    cin>>n;
    int cnt=0;
    for(int i=n;i>=1;i--)fac*=i;
    for(int i=0;i<fac;i++){
    	if(check(m,n)){
    		if(cnt<3){
    			for(int i=0;i<n;i++){
    				cout<<m[i]<<" ";
				}
				cout<<'\n';
			}cnt++;
		}
		next_permutation(m,m+n);
	}
	cout<<cnt;
}
2024/5/22 12:49
加载中...