回溯法Matrix
来源:互联网 发布:iphone蜂窝数据快捷键 编辑:程序博客网 时间:2024/06/15 09:28
Matrix
Description
Given an n*nmatrix A, whose entries Ai,j are integer numbers ( 0 <= i < n, 0 <= j< n ). An operation SHIFT at row i ( 0 <= i < n ) will move theintegers in the row one position right, and the rightmost integer will wraparound to the leftmost column.
You can do the SHIFT operation at arbitrary row, and as many times as you like.Your task is to minimize
max0<=j<n{Cj|Cj=Σ0<=i< nAi,j}
Input
The input consistsof several test cases. The first line of each test case contains an integer n.Each of the following n lines contains n integers, indicating the matrix A. Theinput is terminated by a single line with an integer −1. You may assume that 1<= n <= 7 and |Ai,j| < 104.
Output
For each testcase, print a line containing the minimum value of the maximum of column sums.
Sample Input
2
4 6
3 7
3
1 2 3
4 5 6
7 8 9
-1
Sample Output
11
15
题意描述:给定一个N*N的矩阵,其中每一行可以任意循环移动。现在求使其移动后所有列之和最大值的最小值。
解题思路:没什么好方法,直接采用暴力搜索
程序为:
#include<iostream>
using namespace std;
int n;
int key[7][7];
int mine;
void shift(int row);
int sumcol(int col);
void copute(int row);
int main()
{
cin>>n;
while(n!=-1)
{
mine=100000;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cin>>key[i][j];
}
}
copute(0);
cout<<mine<<endl;
cin>>n;
}
return 0;
}
void shift(int row)
{
inttem=key[row][n-1];
for(int i=n-1;i>0;i--)
{
key[row][i]=key[row][i-1];
}
key[row][0]=tem;
}
int sumcol(int col)
{
int sum=0;
for(int i=0;i<n;i++)
sum+=key[i][col];
return sum;
}
void copute(int row)
{
if(row==n)
{
return ;
}
intmax=-100000000;
int sum;
for(int i=0;i<n;i++)
{
sum=sumcol(i);
if(sum>max)
max=sum;
}
if(max<mine)
mine=max;
for(int i=0;i<n;i++)
{
shift(row);
copute(row+1);
}
}
- 回溯法Matrix
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- hdu 3666 THE MATRIX PROBLEM
- wpf工程中在Xaml文件下添加多个cs文件
- 第十二周项目1 图基本算法库
- Android高效获取指定类型文件,获取文件不求人!
- Android电话监听与短信监听
- 回溯法Matrix
- 最大似然估计学习总结------MadTurtle 1. 作用 在已知试验结果(即是样本)的情况下,用来估计满足这些样本分布的参数,把可能性最大的那个参数clip_image002作为真实cl
- dfs ancient go
- 全对偶测试法1
- 再来一发迪杰斯特拉最短路。HDU2112
- 黑马程序员--面向对象(day05)
- Redis 集群规范(中文稿)(MOVED错误码及ASK错误码
- 在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法
- java动态代理(JDK和cglib)