poj Matrix 回溯,递归,虽然对于很多人是水题,但我感觉这道题听好的嘛!!!!!!!!!!!
2011-08-17 10:48
148 查看
我一开始看这道题,以为就是简单爆搜数据也不大,认为水题一个,飞速将代码打上,结果连样例都没过,仔细一想我的这种暴力太低级了,还想着n多大就套几个for循环,太呆了,我也就不说什么了,后来看了别人的回溯递归,豁然开朗啊!!
这道题我想应该对回溯有一定的理解,我当初就没理解好,以至于不会用,这个回溯递归很好的解决我的有几个n就套几个for循环的白痴想法
#include<iostream>
using namespace std;
int n;
int a[10][10];
int max()// 求每个矩阵的最大列和
{
int sum=-0xFFFF;
for(int j=1;j<=n;j++)
{
int cou=0;
for(int i=1;i<=n;i++)
cou+=a[i][j];
if(cou>sum)
sum=cou;
}
return sum;
}
int min1;
void move(int i)//行移动
{
int temp=a[i][1];
for(int j=1;j<n;j++)
a[i][j]=a[i][j+1];
a[i]
=temp;
}
void solve(int i)//递归移动求和
{
if(i>=n)//核心,只有当i移到最下面才开始计算
{
int t=max();
if(t<min1)
min1=t;
}
else
{
int temp=n;
while(temp--)//移动n次
{
move(i);//移动当前行
solve(i+1);//解决下一行问题
}
}
}
int main()
{
while(scanf("%d",&n),n!=-1)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
}
min1=0xFFFF;
solve(1);
cout<<min1<<endl;
}
return 0;
}
这道题我想应该对回溯有一定的理解,我当初就没理解好,以至于不会用,这个回溯递归很好的解决我的有几个n就套几个for循环的白痴想法
#include<iostream>
using namespace std;
int n;
int a[10][10];
int max()// 求每个矩阵的最大列和
{
int sum=-0xFFFF;
for(int j=1;j<=n;j++)
{
int cou=0;
for(int i=1;i<=n;i++)
cou+=a[i][j];
if(cou>sum)
sum=cou;
}
return sum;
}
int min1;
void move(int i)//行移动
{
int temp=a[i][1];
for(int j=1;j<n;j++)
a[i][j]=a[i][j+1];
a[i]
=temp;
}
void solve(int i)//递归移动求和
{
if(i>=n)//核心,只有当i移到最下面才开始计算
{
int t=max();
if(t<min1)
min1=t;
}
else
{
int temp=n;
while(temp--)//移动n次
{
move(i);//移动当前行
solve(i+1);//解决下一行问题
}
}
}
int main()
{
while(scanf("%d",&n),n!=-1)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
}
min1=0xFFFF;
solve(1);
cout<<min1<<endl;
}
return 0;
}
相关文章推荐
- 八皇后问题(递归,回溯)
- zoj2100 Seeding (DFS递归+回溯)
- 八皇后问题---递归回溯
- N皇后问题 HDU 杭电2553【递归回溯】
- 树的递归回溯 n皇后问题
- “一个好的药鼎对于炼药师来说,就如同武士手中的宝剑一般重要。”
- 棋盘分割 错误账目(递归问题 枚举 回溯)
- C# 用回溯递归解决“八皇后”问题
- 八皇后问题c++代码递归回溯实例及运行结果
- 子集和的递归解法和回溯法
- 回溯算法 - 转非递归
- 递归,回溯,DFS,BFS的理解和模板
- n皇后问题--递归回溯
- 对于递归的浅显理解
- 黑马程序员——对于递归的学习
- hdoj--1016--Prime Ring Problem(递归回溯)
- 对于二叉树三种非递归遍历方式的理解
- 数的拆分(递归搜索回溯)
- 八皇后问题(递归+回溯)
- 对于搜索引擎的感觉