搜索所有的路径-矩阵运算-暴力-ACM
有多个测试序列,每个测试序列第一行是一个整数n(1<=n<=7),表明矩阵的阶。后面n行每行n个整数,表示矩陈元素。n=-1表示输入结束,无需处理。
2
4 6
3 7
3
1 2 3
4 5 6
7 8 9
-1
最小值
11
15
不需要特殊的数据结构;从题目描述,数据的规模不大(n<8),算法采用暴力搜索。所有的可能情况都找出来:每一行都可能移0到n-1步,所以总的情况有nn 种,对每种情况进行编号。如n=7时,7进制的0123456表示第一行不动,第二行移动一次……
#include <stdio.h>
#include <math.h> int n;
int matrix[128][128];
int s[128];
void inttoseries(int i,int *s)
{
int j,k;
//函数将序号化为移动的序列
for(k=0,j=i;k<n-1;++k)
{
//二维数组并未移动,s[k]记录的偏移量,第一行未移动
s[k]=j%n;j/=n;
}
} int maxcolumn(int *s)
{
int max,i,j,temp;
// 函数返回在指定移动情况下的最大值。
for(max=matrix[0][0],i=1;i<n;++i)
max+=matrix[i][s[i-1]]; //计算第1列的和
for(i=1;i<n;++i)
{
for(j=1,temp=matrix[0][i];j<n;++j)
temp+=matrix[j][(s[j-1]+i)%n]; //计算第 i 列的和
if(temp>max)max=temp;
} return max;
} int main(){
int min,i,j,temp;
while(scanf("%d",&n),n+1)
{
for(i = 0;i<n;i++){
for(j = 0;j<n;j++){
scanf("%d",&matrix[i][j]);
}
}
inttoseries(0,s);
min=maxcolumn(s);
int k = (int)pow(n,n); //所有可能的情况共有n^n种
for(i=1;i<k;++i) //循环将遍历所有移动情况
{
inttoseries(i,s); //将i转换成移动编码s
temp=maxcolumn(s); //计算按照移动编码s进行移动所能取得的最大值
if(temp<min)min=temp;
}
printf("%d\n",min);
}
return 0;
}
搜索所有的路径-矩阵运算-暴力-ACM的更多相关文章
- Mine Number(搜索,暴力) ACM省赛第三届 G
Mine Number Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Every one once played the gam ...
- 洛谷 P2196 挖地雷 & [NOIP1996提高组](搜索,记录路径)
传送门 解题思路 就是暴力!!! 没什么好说的,总之,就是枚举每一个起点,然后暴力算一遍以这个点为起点的所有路径,在算的过程中,只要比目前找到的答案更优,就有可能是最后的答案,于是就把路径更新一遍,保 ...
- 从0开始学java——JSP&Servlet——web容器搜索class的路径顺序
在web应用程序如果要用到某个类,会按照如下的顺序来搜索: 1)在WEB-INF/classes目录下搜索: 2)如果该目录下没有,则会到WEB-INF/lib目录下的jar文件中搜索: 3)如果还没 ...
- Nikita and string [思维-暴力] ACM
codeforces Nikita and string time limit per test 2 seconds memory limit per test 256 megabytes O ...
- js图的数据结构处理----邻链表,广度优先搜索,最小路径,深度优先搜索,探索时间拓扑
//邻居连表 //先加入各顶点,然后加入边 //队列 var Queue = (function(){ var item = new WeakMap(); class Queue{ construct ...
- 搜索专题:问题 E: 挑战ACM迷宫
这是往年校赛的一道题,最开始做这道题的时候还没有系统的学习过搜索,用了C语言学的回溯法尝试,毫无疑问的TLE: 学习了DFS之后,自己的剪枝功力不够,又是TLE,最后学了BFS之后,哇,终于做出来了, ...
- Java import以及Java类的搜索路径
如果你希望使用Java包中的类,就必须先使用import语句导入.import语句与C语言中的 #include 有些类似,语法为: import package1[.package2-].cl ...
- Python 学习 第十五篇:模块搜索路径和包导入
在导入自定义的模块时,除了指定模块名之外,也需要指定目录,由于Python把目录称作包,因此,这类导入被称为包导入.包导入把计算机上的目录变成Python的命名空间,而目录中所包含的子目录和模块文件则 ...
- Java知多少(9) import及Java类的搜索路径
如果你希望使用Java包中的类,就必须先使用import语句导入. import语句与C语言中的 #include 有些类似,语法为: import package1[.package2…].c ...
随机推荐
- 合并两个rs结果输出
<%Const SqlDatabaseName = "DNN625" ' 数据库名字' Const SqlPassword = "123456& ...
- 前谷歌首席 Java 架构师谈如何设优秀的 API
随着近来软件规模的日益庞大,API编程接口的设计变的越来越重要.良好的接口设计可以降低系统各部分之间的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合度,从而提高系统的维护性和稳定性. Joshu ...
- 以O2O为核心的ERP思考
O2O已经火了一阵子了,很多人都在说O2O,各行各业都想和O2O有所结合,都认为这里面将会有巨大的商机. 在互联网发展到移动互联网的时代,我们的生活的很多方面已经被改变了,很多事情都已经可以在移动端完 ...
- 通过代码来执行testng.xml
大多数时候,我们都是通过Eclipse IDE上的操作命令来执行testng 框架下的case 运行.那如果我们不想通过这种方式,而是想通过代码调用来实现执行该怎么办?下面是我搜集的两种方式供大家参考 ...
- 不同车型 不同起步价不同费用的问题(switch语句)
#include "stdio.h" #include "math.h" main() { int a; float meet,b; printf(" ...
- BZOJ 3262 陌上花开 CDQ分治
= =原来复杂度还是nlog^2(n) Orz 被喷了 #include<cstdio> #include<cstdlib> #include<algorithm> ...
- 基于XMPP实现的Openfire的配置安装+Android客户端的实现
最近在整理一些这方面的资料,闲话少说,咱还是直奔主题吧 :) 一.基于xmpp实现的openfire的配置安装 1. 下载最新的openfire安装文件 官方下载站点: http://www.igni ...
- MyEclipse_6.0.1GA_E3.3.1集成版下载地址
因在开发中经常使用到myeclipse 对比相关版本,还是觉得6.0 –6.5 比较适合开发,其他的开发起来比较卡,下面是下载地址 MyEclipse_6.0.1GA_E3.3.1集成版下载地址: ...
- myEclipse新建jsp,默认编码
修改地方在: myeclipse →fiter and editor →jsp
- CentOS 6.7编译安装PHP 5.6
1.准备编译环境 yum install gcc gcc-c++ pcre* openssl* gd-devel* libxml2-devel bzip2-devel libcurl-devel 2. ...