北京师范大学珠海分校
Judge Online of ACM ICPC
1257 全能的福娃
C语言版
Judge Online of ACM ICPC
1257 全能的福娃
C语言版
- #include <stdio.h>
- #include <string.h>
- int n,sum,max,a[8][8],out[8],tmp[8];
- void input(){
- int i,j;
- for(i=1;i<=n;i++)
- for(j=1;j<=n;j++)
- scanf("%d",&a[i][j]);
- }
- void output(){
- int i;
- printf("%d/n",max);
- for(i=1;i<=n;i++)
- printf("%d ",out[i]);
- printf("/n");
- }
- void reset(){
- int i;
- sum=max=0;
- memset(tmp,0,sizeof(tmp));
- }
- void find(int n,int step){
- int i,j,p,q;
- if(step>n) return;
- i=step;
- for(j=1;j<=n;j++){
- if(tmp[j]==0){
- sum+=a[i][j];
- tmp[j]=i;
- if(sum>max&&n==step){
- max=sum;
- for(p=1;p<=n;p++)
- for(q=1;q<=n;q++)
- if(tmp[q]==p) out[p]=q;
- }
- find(n,step+1);
- sum-=a[i][j];
- tmp[j]=0;
- }
- }
- }
- int main(){
- while(1){
- scanf("%d",&n);
- if(n==0) break;
- input();
- reset();
- find(n,1);
- output();
- }
- return 0;
- }