当前位置: 首页 > news >正文

bfs

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

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

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

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

Input

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

Output

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

Sample Input

0 1 2 3 4 5 6 7 8 9
1 1 1 1 1 1 1 1 1 0
2 1 1 1 1 1 1 1 1 0
3 1 1 1 1 1 1 1 1 0
4 1 1 1 1 1 1 1 1 0
5 1 1 1 1 1 1 1 1 0
6 1 1 1 1 1 1 1 1 0
7 1 1 1 1 1 1 1 1 0
8 1 1 1 1 1 1 1 1 0
9 1 1 1 1 1 1 1 1 5

Sample Output

50
#include <iostream>
using namespace std;
#include<string.h>
#include<set>
#include<stdio.h>
#include<math.h>
#include<queue>
#include<map>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include <cstdio>
#include <cstdlib>
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<coordinate>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<<min1<<endl;
}

注意叠加思想

注意边界

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

相关文章:

  • Anaconda使用(转载)
  • stl vector源码剖析
  • 【Android Dev Guide - 04】 - Media - 学习使用MediaPlayer播放音乐
  • android开发学习之路——连连看之游戏界面(一)
  • 安装GoldenGate错误OGG-01756
  • 源码阅读经验谈-slim,darknet,labelimg,caffe(1)
  • 【AMQ】之JMS概念
  • GoldenGate之目录详解
  • 【AMQ】之JMS Mesage structure(JMS消息结构)
  • 十五、多项式乘法与快速傅里叶变换
  • 八大排序算法的python实现(二)希尔排序
  • 海量数据处理之Bloom Filter详解
  • Bat 批处理之 for/f 详解
  • 海量数据处理面试题集锦
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 11111111
  • Android优雅地处理按钮重复点击
  • Angular2开发踩坑系列-生产环境编译
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • CSS 三角实现
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • mysql innodb 索引使用指南
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 彻底搞懂浏览器Event-loop
  • 回顾 Swift 多平台移植进度 #2
  • 嵌入式文件系统
  • 全栈开发——Linux
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​io --- 处理流的核心工具​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #NOIP 2014# day.1 T2 联合权值
  • (07)Hive——窗口函数详解
  • (1)Nginx简介和安装教程
  • (1)虚拟机的安装与使用,linux系统安装
  • (70min)字节暑假实习二面(已挂)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (zhuan) 一些RL的文献(及笔记)
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • ./configure,make,make install的作用
  • .dwp和.webpart的区别
  • .Net MVC + EF搭建学生管理系统
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 反射 Reflect
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @ModelAttribute使用详解