硬币问题 DP 已知起始点的最长最短路径问题
来源:互联网 发布:约瑟夫环算法 编辑:程序博客网 时间:2024/05/18 22:43
题目描述 已知硬币总价值S 给你n种不同的硬币 面值分别为ai 求出组成总面值硬币个数的最小值以及最大值。
input
输入数据有多组 每组数据有硬币种数n,总价S和n种硬币面值
output
输出对应每组输入的硬币数目的最小值和最大值
sample_input
3 3 1 2 3 5 30 1 3 5 7 9
sample_output
1 34 30
#include <iostream>#include <cstring>#include <cstdio>using namespace std;int main(){ int n,s; int data[110]; int dpmin[10010]; //记录达到总面值为i时候的所使用硬币个数的最大值或最小值 int dpmax[10010]; while(~scanf("%d%d",&n,&s)) { memset(data,0,sizeof(data)); for(int i=1;i<=s;i++) { dpmin[i]=10001; dpmax[i]=-10001; } for(int i=0;i<n;i++) scanf("%d",&data[i]); dpmin[0]=0,dpmax[0]=0; for(int i=1;i<=s;i++)// i表示当前钱数 { for(int j=0;j<n;j++)//硬币种类循环 { if(data[j]<=i) dpmin[i]=min(dpmin[i-data[j]]+1,dpmin[i]); if(data[j]<=i) dpmax[i]=max(dpmax[i-data[j]]+1,dpmax[i]); } } /* for(int i=1;i<=s;i++) cout<<dpmin[i]<<" "; cout<<endl; */ cout<<dpmin[s]<<" "<<dpmax[s]<<endl; } return 0;}
0 0
- 硬币问题 DP 已知起始点的最长最短路径问题
- 点对的最短路径问题
- DP入门之最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- 最短路径问题
- Android导入android-support-v4.jar
- C++析构函数知识点小结
- 十大常用数据结构
- FTP实现断点续传
- C++编程风格1——头文件
- 硬币问题 DP 已知起始点的最长最短路径问题
- C语言 字符串常见问题总结
- 使用Hint优化复杂SQL案例-2
- 定点数(纯整数/纯小数)补码
- 简易记事本
- CSU1580: Outing(图论+DP)
- 【Caffe实践】损失函数解析
- 基于FPGA的数字时钟
- MFC 简单的对话框小程序在虚拟机中运行失败