莫名其妙死了。。。

P1406 方格填数

@[Hiraeth](/space/show?uid=99460) Orz
by mulberror @ 2019-04-09 20:49:58


``` #include<bits/stdc++.h> using namespace std; long long int b[4][4],a[16],v[16],N,f,s; void print() { if(f)return; printf("%d\n",s); for(int i=0;i<N;i++,putchar(10)) for(int j=0;j<N;j++) printf("%d ",b[i][j]); f=1; } bool check() { int s1[4]={0},s2[4]={0},x=-100000000; for(int i=0;i<N;i++) for(int j=0;j<N;j++) s1[i]+=b[i][j],s2[j]+=b[i][j]; for(int i=0;i<N;i++) if((s1[i]!=s&&s1[i]>=x)||(s2[i]!=s&&s2[i]>=x))return 0; int l1=0,l2=0; for(int i=0;i<N;i++) l1+=b[i][i],l2+=b[i][N-1-i]; if((l1!=s&&l1>=x)||(l2!=s&&l2>=x))return 0; return 1; } void dfs(int x,int y) { if(!check()||f)return; if(x==N-1&&y==N-1&&check()){print();return;} int nx=x+(y+1)/N,ny=(y+1)%N; for(int i=0;i<N*N;i++) if(!v[i]) v[i]=1,b[nx][ny]=a[i],dfs(nx,ny),b[nx][ny]=-500000000,v[i]=0; } int main() { scanf("%d",&N); for(int i=0;i<N*N;i++) scanf("%d",a+i),s+=a[i],b[i/N][i%N]=-500000000; s/=N; sort(a,a+N*N); dfs(0,-1); return 0; } ```cpp 同上,我也莫名其妙死了。。。
by 什么叫中二呀 @ 2019-04-12 22:31:00


……~~查出脑残错误~~ 好心人们帮忙再找一下错(WA3,4) ```cpp #include<bits/stdc++.h> using namespace std; long long int b[5][5],a[100],v[100],N,f,s; void print() { if(f)return; printf("%lld",s); for(int i=0;i<N;i++) { putchar(10); for(int j=0;j<N;j++) printf("%lld ",b[i][j]); } f=1; } bool check() { int s1[4]={0},s2[4]={0},x=-100000000; for(int i=0;i<N;i++) for(int j=0;j<N;j++) s1[i]+=b[i][j],s2[j]+=b[i][j]; for(int i=0;i<N;i++) if((s1[i]!=s&&s1[i]>=x)||(s2[i]!=s&&s2[i]>=x))return 0; int l1=0,l2=0; for(int i=0;i<N;i++) l1+=b[i][i],l2+=b[i][N-1-i]; if((l1!=s&&l1>=x)||(l2!=s&&l2>=x))return 0; return 1; } void dfs(int x,int y) { if(!check()||f)return; if(x==N-1&&y==N-1&&check()){print();return;} int nx=x+(y+1)/N,ny=(y+1)%N; for(int i=0;i<N*N;i++) if(!v[i]) { v[i]=1; b[nx][ny]=a[i]; dfs(nx,ny); b[nx][ny]=-500000000; v[i]=0; } } int main() { scanf("%lld",&N); for(int i=0;i<N*N;i++) { scanf("%lld",a+i); s+=a[i]; b[i/N][i%N]=-500000000; } s/=N; sort(a,a+N*N); dfs(0,-1); return 0; } ```
by 什么叫中二呀 @ 2019-04-12 23:32:03


|