第二周钱币兑换问题题解

问题简述

给你一个正整数,可以分为分别由1、2或3组成,求有多少种求法。

思路

一开始,我是一个一个循环慢慢求方法数,先有零个3,零个2,为一种,零个3,一个2为一种以此类推慢慢计数,最终求出方法数,写出来后,但最后超时了。然后就想换另一种方法,但是想了好久都没想出来……然后我就列了几组数据找规律,1到5方法数都是它本身,6的方法数为7,之后每6个数字为一组,7的方法数为1的方法数加7,8的方法数为2的方法数加8,……n的方法数为(n-6)的方法数加n,(其实说实话我也不知道这个规律是什么意思,感觉自己水了一道题,有点难受…只好等师兄题解了)找到这个规律后运用递推可以求出n的方法数。

AC通过的C++语言程序如下:

#include<iostream>
using namespace std;
int f(int );
int main()
{
	int a;
	while (cin >> a)
	{
		if (a % 6 == 0) cout << f(a) + 1 << endl;
		else cout << f(a) << endl;
	}
	return 0;
}
 int f(int x)
{
	 if (x <= 6) return x;
	 else return (f(x - 6) + x);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值