搜索所有的路径-矩阵运算-暴力-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 ...
随机推荐
- 使用devpartner的blockchecker检查c++内存错误
在仿写stl的过程中,被一处内存错误卡了很久.当内存池需要多次malloc时会出现堆损坏的错误,初步判断是数组越界,但总是检查不出来.一开始用Dr.Memory检查不出来,就试了一下devpartne ...
- Codeforces Round #208 (Div. 2) 358D Dima and Hares
题目链接:http://codeforces.com/problemset/problem/358/D 开始题意理解错,整个就跪了= = 题目大意:从1到n的位置取数,取数的得到值与周围的数有没有取过 ...
- Circle - SGU 130(递推)
题目大意:一个圆上有2K个点,用K个线把他们连接起来,求出这些线最少可以把这个圆分成P部分,有N种分割方法.输出N和P. 分析:分割线一定是相互不相交的线,所以可以把这写分成两部分,f[i] += f ...
- Conversion between json and object using SBJson lib
Define two methods in an object class as follows: @interface MyObject : NSObject @property (nonatomi ...
- linux —— 学习笔记(用户管理与权限控制)
目录:1.用户的创建和管理 2.组的创建和管理 3.文件执行权限的控制 4.不用密码执行sudo 1.用户的创建和管理 用户的创建和管理: useradd.usermod . userdel . ...
- memcached的基本命令(安装、卸载、启动、配置相关)
memcached的基本命令(安装.卸载.启动.配置相关):-p 监听的端口 -l 连接的IP地址, 默认是本机 -d start 启动memcached服务 -d restart 重起memcac ...
- 异常Address already in use: JVM_Bind的处理
如题,Address already in use: JVM_Bind这个异常的意思就是说jvm被占用了 那么大家一般的解决情况都是重启一下eclipse , 结果还是不行,结果就只能重启电脑了. 对 ...
- centos 正确 安装 jdk
1>先找下centos下java默认安装的情况 whereis java which java (java运行路径) echo $JAVA_HOME echo $PATH 2> 查看并卸载 ...
- nrf51822蓝牙芯片ble_app_proximity程序总结
近期由于钥匙的事情,研究了下官方自带的ble_app_proximity程序,事实上就是跟防丢有关系的程序. 同一时候也发现了看nordic程序的一些门道,主要还是看协议栈里面的一些service,首 ...
- C# 二进制替换第一弹 byte 数组替换
在做通讯相关的数据操作时常常须要用到 byte[] byte 数组替换操作.比方协义转换相关的 如今提供了几种替换的方法 /// <summary> /// 二进制数据 操作 /// ...