问题标题: 酷町堂:1801 换小额钞票

0
0
已解决
陈曦
陈曦
资深天翼
资深天翼

题目传送门

#include<iostream>
using namespace std;
int main(){
	int n,cnt=0;
	cin>>n;
	for(int i=0;i<=n*100/10;i++){
		for(int j=0;j<=n*100/20;j++){
			int k=n*100-i*10-j*20;
			if(k%50==0&&k>=0){
				cnt++;
			}
		}
	}
	cout<<cnt;
	return 0;
}

Time Limit Exceeded

30

 

 

请找错

陈曦在2020-08-03 07:59:39追加了内容

陈曦在2020-08-03 08:10:37追加了内容

加悬赏啦!


0
已采纳
欧阳语聪
欧阳语聪
资深守护
资深守护

核心:

n*=100;
    for(int i=0; i<=n/50; i++)
    {
            ans+=(n-i*50)/20+1;
    }
0
贾志骜
贾志骜
新手光能
新手光能

做出来了没?

 

贾志骜在2020-08-03 20:46:49追加了内容

没有我就看下

0
0
陈曦
陈曦
资深天翼
资深天翼

@侯平仄 !!!

快来帮忙!

 

 

0
张天璨
张天璨
新手天翼
新手天翼
以下是核心:
    int a=n*100/50/*计算最大面值钞票张数*/,x,y,b;
    for(int i=0;i<=a;i++)
    {
    	x=n*100-i*50;//剩余钱数 
    	y=x/20;//20元钞票张数 
    	for(int j=0;j<=y;j++)
    	{
    		sum++;//兑换的方式总数 
    	}
    }
    cout<<sum;

张天璨在2020-08-04 08:39:10追加了内容

直接枚举就可以了。

别忘了采纳我!

0
潘晨皓
潘晨皓
高级天翼
高级天翼
    int a,__1__;
    cin>>a;
    for(int i=0;i<=__2__;i++){
        ans+=__3__;
    }
    cout<<__4__;

枚举

 

0
刘英杰
刘英杰
新手天翼
新手天翼

@陈曦 @陈曦 @陈曦 @陈曦 @陈曦 

你是不是上学而思语文

在里面一个川菜老师班

辅导是宋佳宇老师???

另外,这题我不会(doge)

(其实是我讲不出来思路)

0
徐子玄
徐子玄
初级光能
初级光能

枚举核心如下:

n*=100;//n张100,共100*n元
int count=0;//方法数
int end=n/50;
for(int i=0;i<=end;i++)
    count+=(n-i*50)/20+1;//一共有多少种方法

count就是最后答案!

望采纳

0
黄子扬
黄子扬
初级天翼
初级天翼

建议学习时间复杂度,n<=10000,你写个O(n^2)的生怕不超时?

我觉得可以dp的思想,就是那个coin问题的思路

f[i]=f[i-10]+f[i-20]+f[i-50];

当然状态转移方程方程我口胡的,不保证正确性,别受我过大误导

黄子扬在2020-08-02 22:04:27追加了内容

就是假如我们考虑1000元有多少组成方式

我们可以从 990元    980元    和950元     三种面值的方案来考虑

将三种方案相加应该就是1000元面值的

0
李瑞曦
李瑞曦
高级天翼
高级天翼

题目中的数据范围很大,你这样做会超时,不过你说找错,那我也帮不了你,因为你循环都要改····

0
王文博
王文博
缔造者之神
缔造者之神

用枚举法来做题就OK了

0
我要回答