博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bfs
阅读量:4683 次
发布时间:2019-06-09

本文共 1548 字,大约阅读时间需要 5 分钟。

有一天陈世进约了唐威豪去看电影,电影院有一个活动,给你一个10*10的矩阵,每一个格子上都有一个0-9的整数,表示一共十种优惠券中的一种。

观众从左上角的格子开始走,走到右下角。每走到一个有着a号优惠券的格子,都必须要玩一个a分钟的游戏来领取这张优惠券。

每次只能向右或向下走。当走到右下角的时候,如果集齐10种优惠券就可以半价看电影呢。

为了能在唐威豪面前展示自己的才智,陈世进准备用最少的时间领取全部的优惠券(他要省出最多的时间陪唐威豪)。聪明的你能告诉陈世进,他最少要花费的时间是多少?

Input

输入包含10行,每行10个数字,以空格隔开,表示格子上的优惠券的种类。数据保证存在合法路径。

Output

输出陈世进走到右下角的最小时间花费。

Sample Input

0 1 2 3 4 5 6 7 8 91 1 1 1 1 1 1 1 1 02 1 1 1 1 1 1 1 1 03 1 1 1 1 1 1 1 1 04 1 1 1 1 1 1 1 1 05 1 1 1 1 1 1 1 1 06 1 1 1 1 1 1 1 1 07 1 1 1 1 1 1 1 1 08 1 1 1 1 1 1 1 1 09 1 1 1 1 1 1 1 1 5

Sample Output

50
#include 
using namespace std;#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int dir[2][2]={ 0,1,1,0};int a[12][12];struct coordinate{ int x; int y; int time; int sign[11];}s;int main(){ for(int i=1;i<=10;i++) for(int j=1;j<=10;j++){ cin>>a[i][j]; } s.time=a[1][1]; memset(s.sign,0,sizeof(s.sign)); s.sign[a[1][1]]=1; queue
q; s.x=1; s.y=1; q.push(s); int min1=1e8; while(!q.empty()){ int temp=1; for(int i=0;i<10;i++){ if(q.front().sign[i]==0){ temp=0; break; } } if(temp&&q.front().x==10&&q.front().y==10) min1=min(min1,q.front().time); for(int i=0;i<2;i++){ s=q.front(); s.x=q.front().x+dir[i][0]; s.y=q.front().y+dir[i][1]; s.sign[a[s.x][s.y]]=1; s.time=q.front().time+a[s.x][s.y]; if(s.x<=10&&s.x>0&&s.y>0&&s.y<=10){ q.push(s); } } q.pop(); } cout<
<

注意叠加思想

注意边界

转载于:https://www.cnblogs.com/carry-2017/p/7395946.html

你可能感兴趣的文章
引用同一解决方案的类库工程不成功
查看>>
[转]单例模式中为什么用枚举更好
查看>>
selenium 获取断言信息
查看>>
弹出层详解,从简单到复杂
查看>>
c# 模拟get请求例子,演示Session会话状态。
查看>>
[.net 面向对象程序设计深入](0) 开篇
查看>>
C 多线程学习
查看>>
POJ3186:Treats for the Cows(区间DP)
查看>>
【stanford C++】——2.C++中函数
查看>>
监听事件android activity中键盘的监听
查看>>
bash中的转义
查看>>
浅论网站优化还有涉足百度产品的必要吗
查看>>
#Sam有话说#一握在手,话说十年
查看>>
Mysql和Oracle的卸载
查看>>
web框架
查看>>
js工具之QUnit
查看>>
使textarea支持tab键
查看>>
20165235 实验二Java面向对象程序设计
查看>>
Redis总结笔记(二):C#连接Redis简单例子
查看>>
Yahoo前端35条性能优化
查看>>