ZOJ2418

来源:互联网 发布:php工厂模式单例模式 编辑:程序博客网 时间:2024/05/20 11:32

题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1418

虽然是个简单的DFS。。但是还是打了半天,题意很简单,就是对于每一行的数可以进行向右移动,每一行移动的次数可以为0,1,2.....n-1,

那么他的事件复杂度为7^7=823543.暴力DFS可以直接AC。

下面是AC代码:

#include<iostream>using namespace std;int ans,n;void dfs(int row,int b[][10]){int i,j;if(row==n) return;int s,max=-1000000,c[10][10];for(i=0;i<n;i++){s=0;for(j=0;j<n;j++)s+=b[j][i];if(s>max) max=s;}//cout<<s<<endl;if(max<ans) ans=max;//cout<<ans<<endl;for(i=0;i<n;i++)for(j=0;j<n;j++)c[i][j]=b[i][j];for(i=0;i<n;i++){for(j=0;j<n;j++){if(j-i<0)c[row][j]=b[row][j-i+n];elsec[row][j]=b[row][j-i];}dfs(row+1,c);}}/*void solve(int a[][10]){   int i,j;for(i=0;i<n;i++)for(j=0;j<n;j++)a[i][j]+=10;}*/int main(){int i,j;int a[10][10];while(cin>>n&&n>0){ans=10000*100;for(i=0;i<n;i++)for(j=0;j<n;j++) cin>>a[i][j];dfs(0,a);cout<<ans<<endl;}return 0;}


原创粉丝点击