求助!4RE!
查看原帖
求助!4RE!
1188389
wangyiyao__楼主2024/2/23 21:41

代码如下:

#include<bits/stdc++.h>
using namespace std; 
int n,b[105],a[11][11];
bool vis[105];
long long s,c;
void printf(){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<a[i][j]<<" ";
		}
		cout<<endl;
	}
	return ;
}
bool hang(int x,int i){
	for(int j=1;j<=n-1;j++) c+=a[x][j];
	if(c==s) return 0;
	return 1;
} 
bool lie(int y,int i){
	for(int j=1;j<=n-1;j++) c+=a[j][y];
	if(c==s) return 0;
	return 1;
} 
bool fuduijiaoxian(int i){
	for(int j=n-1;j>=1;j--) c+=a[j][n-j+1];
	if(c==s) return 0;
	return 1;
}
bool zhengduijiaoxian(int i){
	for(int j=n-1;j>=1;j--) c+=a[j][j];
	if(c==s) return 0;
	return 1;
}
int dfs(int x,int y){
	if(x==n+1&&y==1){
		printf();
		exit(0);
	}
	for(int i=1;i<=n*n;i++){
		if(!vis[i]){
			if(y==n){
				c=b[i];
				if(hang(x,i)) continue;
			}
			if(x==n){
				c=b[i];
				if(lie(y,i)) continue;
			}
			if(x==n&&y==1){
				c=b[i];
				if(fuduijiaoxian(i)) continue;
			}
			if(x==n&&y==n){
				c=b[i];
				if(zhengduijiaoxian(i)){
            	continue;
           }
			}
			vis[i]=1;
			a[x][y]=b[i];
			if(y!=n) dfs(x,y+1);
			else dfs(x+1,1);
			vis[i]=0;
			a[x][y]=0;
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n*n;i++) cin>>b[i],s+=b[i];
	s/=n;
	cout<<s<<endl;
	sort(b+1,b+n*n+1);
	if(n==1){
		cout<<b[1];
		return 0;
	}
	dfs(1,1);
	return 0;
}

请问大佬,为何RE,谢谢!

2024/2/23 21:41
加载中...