POJ-2078-Matrix

来源:互联网 发布:python去除重复列 编辑:程序博客网 时间:2024/06/05 02:37

题目链接:http://poj.org/problem?id=2078,也是搜索基础题。

#include<iostream>using namespace std;int a[8][8];int n;int minn;void trans(int i)//每一行的移动操作{    int j;    int t;    t=a[i][n-1];    for(j=n-2;j>=0;j--)//一开始样例过不了,找了很久的错都没发现,后来才明白移动操作出了问题,    a[i][j+1]=a[i][j];//我一开始写的移动操作简单的从j开始,a[i][j]=a[i][j-1];导致一个数一直被移动到最后,= =水死了。。    a[i][0]=t;}void solve(int k)//计算每一竖列的总和{    int i,j;    if(k==n)//注意当k(层数)越界时,就说明二维数组已经排好了,可以计算竖列的和了    {        int maxx;        maxx=0x80000000;        for(j=0;j<n;j++)        {            int sum=0;            for(i=0;i<n;i++)            {                sum+=a[i][j];            }            if(sum>maxx)maxx=sum;        }        if(maxx<minn)minn=maxx;    }    else    {        for(int m=0;m<n;m++)        {            trans(k);            solve(k+1);        }    }}int main(){    int i,j;    while(cin>>n&&n!=-1)    {        for(i=0;i<n;i++)        {            for(j=0;j<n;j++)                cin>>a[i][j];        }        minn=0x7fffffff;        solve(0);        cout<<minn<<endl;    }    return 0;}


0 0
原创粉丝点击