题目描述

小明在玩成语接龙的游戏。成语接龙的规则是,如果成语A的最后一个汉字与成语B的第一个汉字相同,那么成语B就可以接到成语A的后面。
小明现在手上有一本成语词典,每次他都得花费一定时间来从当前的成语查到下一个可以接在后面的成语。
现在给你一个成语列表,请你计算从列表中的第一个成语开始,到接到列表中的最后一个成语最少需要多长时间。

输入格式

输入包含多组测试数据。
每组输入第一行是一个整数N(0<N<1000),表示成语列表的长度。
接下来N行,每行先输入一个整数T,再输入一个字符串S。
S表示一条成语,T表示小明从S查到下一个成语所花费的时间。
每条成语由至少3个汉字组成,每个汉字由4个十六进制数(0~9和A~F)组成。
当N=0时,输入结束。

输出

对于每组输入,输出从列表中的第一个成语开始,到接到列表中的最后一个成语需要的最少时间。
如果无法连接到列表中的最后一个成语,则输出-1。

样例输入

5
5 12345978ABCD2341
5 23415608ACBD3412
7 34125678AEFD4123
15 23415673ACC34123
4 41235673FBCD2156
2
20 12345678ABCD
30 DCBF5432167D
0

样例输出

17
-1

#pragma warning(disable:4996)
#include <iostream>
#include<stdio.h>
#include<string.h>
#include<vector>
#include<algorithm>
#include<queue>
#include<string>
using namespace std;
const int MAX_N = 1005;
struct type{int s, e,w;
}a[MAX_N];
int n,min_ans;
int m[MAX_N][MAX_N];
int d[MAX_N];
int find(string s){int ans = 0,k;for (int i = 0; i < 4; i++){if (s[i] <= '9') k = s[i] - '0';else k = s[i] - 'A' + 10;ans += pow(16, 3 - i)*k;}return ans;
}
int dfs(int i){if (d[i]>-1) return d[i];for (int j = 0; j < n;j++)if (m[i][j] && dfs(j)!=-1 && (d[i] == -1 || d[j] + a[i].w < d[i])) d[i] = d[j] + a[i].w;return d[i];
}
int main(){//freopen("aaa.txt","r",stdin);string str;while (cin >> n){if (n == 0) break;for (int i = 0; i < n; i++){cin >> a[i].w >> str;a[i].s = find(str.substr(0,4));a[i].e = find(str.substr(str.size()-4,4));}memset(m,0,sizeof(m));memset(d,-1,sizeof(d));d[n-1] = 0;for (int i = 0; i < n;i++)for (int j = 0; j < n;j++)if (i != j && a[i].e == a[j].s) m[i][j] = 1;//min_ans = -1;min_ans=dfs(0);printf("%d\n",min_ans);}//while (1);return 0;
}

1124:成语接龙 dfs+一维数组保存结果相关推荐

  1. 1124: 成语接龙

    1124: 成语接龙 时间限制: 1 Sec 内存限制: 32 MB 提交: 19 解决: 6 题目描述 小明在玩成语接龙的游戏.成语接龙的规则是,如果成语A的最后一个汉字与成语B的第一个汉字相同,那 ...

  2. python一维数组定义,python一维数组保存

    python中向一维数组添加元素的方法 例如爬虫爬取到的数据只有[b11dab7a2f48d131fc9c26678636294381aedd41,供参考: old_array = ['b11dab7 ...

  3. [Swift]多维数组的表示和存储:N维数组映射到一维数组(一一对应)!

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  4. SWPU-DS)若有 n 阶对称矩阵 A,以行序为主序方式,将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在 B 中确定 a[i, j](i<j)

    SWPU-DS)若有 n 阶对称矩阵 A,以行序为主序方式,将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1-(n(n+1))/2]中,则在 B 中确定 a[i, j](i< ...

  5. c语言求100以内整除13的最大,VB程序设计的一道题,找出100以内能被3整除的所有数之和,并把值保存在一维数组中...

    VB程序设计的一道题,找出100以内能被3整除的所有数之和,并把值保存在一维数组中以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看 ...

  6. C语言编程>第二十一周 ② 请补充main 函数,该函数的功能是:把一维数组中的元素逆置,结果仍然保存在原数组中。

    例题:请补充main 函数,该函数的功能是:把一维数组中的元素逆置,结果仍然保存在原数组中. 注意:仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容. 代码如下: #include& ...

  7. java一维数组输入整数n_用键盘接受输入的整数,将输入的整数保存到一个一维数组,然后输出最大值...

    C语言:从键盘上输入一个整数,计算整数的各位数字之和 #includeintGetNumber(intn)//用递归来实现很简单{intsum=0;if(n/10!=0){\x09sum+=GetNu ...

  8. 前缀和(一维数组+二维数组+差分)

    前缀和与差分 图文并茂 超详细整理(全网最通俗易懂)_林深不见鹿 的博客-CSDN博客_前缀和与差分 讲得非常的好,大幅度降低时间复杂度 特别是二维数组的前缀和 二维数组前缀和例题,利用二维数组的前缀 ...

  9. c语言成语接龙编程,C语言完成成语接龙小游戏

    用C语言实现成语接龙小游戏(新手上路,大神勿喷) 1.首先需要找到一个成语库(从网上下载即可,保存为.txt文件) 2.整体思路如下 由于要用的成语保存在文件里,一边用一边读取会降低代码的效率,所以我 ...

最新文章

  1. 【全网之最】全网最简单语句判断网页是否在移动端(手机端、PAD)打开
  2. 快排堆排归排三种排序的比较
  3. python socket编程_Python Socket编程实现网络编程
  4. 剑指offer之两个队列实现栈的问题
  5. 现实中很多人买了车,都是自己开
  6. python的单元测试unittest模块
  7. BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式( 二分答案 + 后缀数组 )
  8. visio画图(保存为pdf,不留空白)
  9. My BlackBerry
  10. 神经网络之BP算法(图说神经网络+BP算法理论推导+例子运用+代码)
  11. Mac更新git用户名和密码
  12. Filecoin系列 - 源码分析 - CPU SHA扩展
  13. 计算机基础:7、计算机的输入输出设备
  14. 时间片轮询+状态机实现裸机多任务
  15. 云渲染是什么?云渲染好处以及安装方法。
  16. SSM整合开发学习笔记
  17. iPhone到底好在哪里
  18. java文件夹拒绝访问-java.io.FileNotFoundException: .\xx\xx (拒绝访问。)
  19. Linux下kiftd开机启动,解决Windows下kiftd无法正常启动的问题
  20. 《乔布斯传》英文原著重点词汇笔记(一)【 Introduction 】

热门文章

  1. WebService 教程(包含项目实践)
  2. 孔浩老师 java 微信_孔浩老师JAVA WebService教程
  3. 亚马逊店飞飞跟卖使用教程图文(三)
  4. 3DMAX最垃圾的地方!你能忍受吗?
  5. 右键清空回收站变成英文,点击出现该文件没有程序与之关联来执行操作什么的,怎么修复?
  6. android 键盘上方浮动,【已解决】点击input输入框时Android端底部的Tab弹出显示在键盘上方...
  7. MacBookPro 连接无线显示“密码无效”
  8. 《机器学习》西瓜书课后习题9.4——python实现K-means算法
  9. linux 用户空间 timer,Linux时间子系统(十五) clocksource
  10. 数据结构综合训练报告--学生宿舍管理查询软件开发(论文+详细代码)