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

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

递推

View Code
#include 
#include
#include
#include
using namespace std;#define maxn 15#define maxk 1005#define maxd 35#define inf 0x3f3f3f3fint n, m;int f[maxn][maxk];int flight_num[maxn][maxn];int flight[maxn][maxn][maxd];void input(){ for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if (i != j) { scanf("%d", &flight_num[i][j]); for (int k = 0; k < flight_num[i][j]; k++) scanf("%d", &flight[i][j][k]); }}void cal(int day, int u, int v){ if (f[u][day] == -1) return; if (flight_num[u][v] == 0) return; if (flight[u][v][day % flight_num[u][v]] != 0 && (f[v][day + 1] == -1 || f[v][day + 1] > f[u][day] + flight[u][v][day % flight_num[u][v]])) f[v][day + 1] = f[u][day] + flight[u][v][day % flight_num[u][v]];}int work(){ memset(f, -1, sizeof(f)); f[0][0] = 0; for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) for (int k = 0; k < n; k++) if (j != k) cal(i, j, k); return f[n - 1][m];}void output(){ for (int i = 0; i <= m; i++) { for (int j = 0; j < n; j++) printf("%d ", f[j][i]); puts(""); }}int main(){// freopen("t.txt", "r", stdin); int t = 0; while (scanf("%d%d", &n, &m), n | m) { input(); int ans = work();// output(); printf("Scenario #%d\n", ++t); if (ans == -1) puts("No flight possible."); else printf("The best flight costs %d.\n", ans); puts(""); } return 0;}

 

转载于:https://www.cnblogs.com/rainydays/archive/2013/01/18/2865978.html

你可能感兴趣的文章
企业软件仓库部署及应用案例(基于CentOS 6的YUM源)
查看>>
探寻路径
查看>>
微访谈活动-企业微博2.0与数据微博营销(转)
查看>>
Android生命周期
查看>>
优酷土豆:财报不是问题!
查看>>
紧急维护,阿里云服务器抢修记
查看>>
linux工具使用
查看>>
站长怎样理性选择虚拟主机
查看>>
linux文件系统\环境变量\帮助文件
查看>>
ioS开发知识(二十二)
查看>>
svn 配置
查看>>
安装saltstack遇到缺包问题!自己遇到的错!若有雷同请海涵
查看>>
数学基础知识03——坐标系变换
查看>>
理解 HashMap 加载因子 loadFactor
查看>>
第三周编程总结
查看>>
发布功能完成
查看>>
用js实现返回上一页
查看>>
因数分解
查看>>
数据结构之队列
查看>>
并发编程(二)
查看>>