codevs 1047 邮票面值设计
来源:互联网 发布:orange软件怎么用 编辑:程序博客网 时间:2024/04/29 13:26
#include<iostream>
using namespace std;
int dp[1000005],a[50];
int inf=1e9;
int n,k,ans[50],mx=0;
直接暴力不重复枚举所有情况,然后更新即可。
void solve()
{
for (int i=1;;i++)
{
dp[i]=inf;
for (int j=1;j<=k && i>=a[j];j++)
dp[i]=min(dp[i],dp[i-a[j]]+1);
if (dp[i]>n)
{
if (i-1>mx)
{
mx=i-1;
for (int o=1;o<=k;o++)
ans[o]=a[o];//
}//只有i-1>mx才更新,但只要dp[i]>n就return;
return ;
}
}
}
void dfs(int i)
{
if (i==k)
{
solve();
return ;
}
for (int j=a[i]+1;j<n*a[i]+2;j++)//这个范围很神。
{
a[i+1]=j;
dfs(i+1);
}
}
int main()
{
cin>>n>>k;
if (n>10||k>10)
return 0;
a[1]=1;
dfs(1);
for (int i=1;i<=k;i++)
cout<<ans[i]<<' ';
cout<<endl<<"MAX="<<mx<<endl;
}
using namespace std;
int dp[1000005],a[50];
int inf=1e9;
int n,k,ans[50],mx=0;
直接暴力不重复枚举所有情况,然后更新即可。
void solve()
{
for (int i=1;;i++)
{
dp[i]=inf;
for (int j=1;j<=k && i>=a[j];j++)
dp[i]=min(dp[i],dp[i-a[j]]+1);
if (dp[i]>n)
{
if (i-1>mx)
{
mx=i-1;
for (int o=1;o<=k;o++)
ans[o]=a[o];//
}//只有i-1>mx才更新,但只要dp[i]>n就return;
return ;
}
}
}
void dfs(int i)
{
if (i==k)
{
solve();
return ;
}
for (int j=a[i]+1;j<n*a[i]+2;j++)//这个范围很神。
{
a[i+1]=j;
dfs(i+1);
}
}
int main()
{
cin>>n>>k;
if (n>10||k>10)
return 0;
a[1]=1;
dfs(1);
for (int i=1;i<=k;i++)
cout<<ans[i]<<' ';
cout<<endl<<"MAX="<<mx<<endl;
}
1 0
- codevs 1047 邮票面值设计
- codevs 1047邮票面值设计
- Codevs 1047 邮票面值设计
- 邮票面值设计(codevs 1047) 题解
- Codevs P1047 邮票面值设计
- codevs 1047 邮票面值设计(dfs+背包,好题)
- 【codevs】 1047 邮票面值设计(dfs+dp剪枝)
- codevs 1047 邮票面值设计 DFS+DP 解题报告
- codevs 2033 邮票 (背包)&& codevs 1047 邮票面值设计 (dfs+dp)
- wikioi 1047 邮票面值设计
- [NOIP1999]邮票面值设计
- 邮票面值设计
- 邮票面值设计
- 邮票面值设计
- NOIP1999邮票面值设计
- 邮票面值设计
- 【NOIP1999】邮票面值设计
- #NOIP1999#邮票面值设计
- ie11浏览器访问javaWeb页面 提示 Audio未定义
- 设计模式-策略
- hello
- [JAVA]String与InputStream互转-20160412
- Elasticsearch Restore失灵
- codevs 1047 邮票面值设计
- 国际版firefox安装方法
- [LeetCode]31. Next Permutation
- Android中Bitmap,byte[],Drawable相互转化
- 我的创业经历
- web day4 javascript&DOM
- HOG特征原理梳理与实验分析
- ServletContextListener的用法
- Android SDK Manager 更新代理配置