安徽大学第三届ACM/ICPC 程序设计竞赛现场赛-取数字问题
来源:互联网 发布:访客网络员工网络区别 编辑:程序博客网 时间:2024/04/30 12:48
描述
定的M*N的矩阵,其中的每个元素都是-10到10之间的整数,你的任务是从左上角(1,1),走到右下角(M,N),每一步只能向下或者向右,你所经过的方格里面的数字都必须被选取,请找出一条最合适的路,使得在路上被选取的数字之和是尽可能小的正整数。
输入
测试数据包括多组,以文件结尾为结束。
第一行:两个正整数M,N(2=<M,N<=10);
接下来的M行:每行包括N个整数,是矩阵中每一行的N个元素。
输出
输出只有一行,就是一个整数,表示所选道路上数字之和所能达到的最小正整数。如果不能达到任何正整数,输出-1。
样例输入
2 2
0 2
1 0
0 2
1 0
#include<iostream>#include<cstring>using namespace std;int n,m;int a[20][20];bool f[20][20];int ax[2]={0,1};int ay[2]={1,0};int sum;void fun(int x,int y,int temp){ temp+=a[x][y]; if(x==n && y==m) { if(temp<sum && temp>0) { sum=temp; } return ; } f[x][y] = true; for(int i=0;i<2;i++) { int xx=x+ax[i]; int yy=y+ay[i]; if(xx>=1&&yy>=1&&xx<=n&&yy<=m&&f[xx][yy]!=true) { fun(xx,yy,temp); } } f[x][y] = false;}int main(){ while(cin>>n>>m) { sum=10000; memset(f,false,sizeof(f)); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; fun(1,1,0); if(sum!=10000)cout<<sum<<endl; else cout<<-1<<endl; } return 0;}
样例输出
1
- 安徽大学第三届ACM/ICPC 程序设计竞赛现场赛-取数字问题
- 安徽大学第五届ACM/ICPC程序设计竞赛——学位的诱惑(又是水题)
- 山东省第三届ACM/ICPC竞赛
- 安徽大学第九届大学生程序设计竞赛热身赛
- 第39届ACM国际大学生程序设计竞赛 亚洲区域赛(现场赛)西安站
- 长安大学第四届ACM-ICPC“迎新杯”程序设计竞赛-重现赛
- 2013ACM/ICPC湘潭多省程序设计竞赛暨湘潭市第五届大学生程序设计竞赛
- ACM-ICPC 程序设计竞赛(转贴)
- 安徽大学第九届大学生程序设计竞赛 网络预选赛
- 安徽大学第九届大学生程序设计竞赛 网络预选赛 A
- 安徽大学第九届大学生程序设计竞赛 网络预选赛 B
- 安徽大学第九届大学生程序设计竞赛 网络预选赛 C
- 安徽大学第九届大学生程序设计竞赛 网络预选赛 D
- 安徽大学第九届大学生程序设计竞赛 网络预选赛 F
- 安徽大学第九届大学生程序设计竞赛 网络预选赛 G
- 安徽大学第九届大学生程序设计竞赛 网络预选赛 H
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
- OCP-1Z0-051-V9.02-38题
- 射频技术
- 堆排序原理详解和Java实现代码
- 写给我自己
- yum 源 no mirrors to try
- 安徽大学第三届ACM/ICPC 程序设计竞赛现场赛-取数字问题
- ASCII码对照表
- windows下自动生成文件夹下所有JNI所需的.h头文件
- ORACLE 事务处理
- input 标签 文本框去掉外边框的方法 兼容ie6及其他浏览器
- 基于 Android NDK 的学习之旅-----环境搭建
- HDFS --- Load FSNameSystem, FSImage, and initialize FSEditlog
- 编程日记----感想
- Lync 2010 升级到2013 之拨入式会议配置!