本文主要是介绍关于吃糖果问题,一直糖果个数,以及每天能吃的个数求能有多少个方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
是一个动态规划问题但是没学过,递归也可以解决
package demoSix;
import java.util.Scanner;
/*
*@author:张文波
*@time2020年4月22日上午10:43:48
*/
public class TangGuoWenTi
{
// 定义一个用于存储每天吃糖的个数的数组
public static int eatNum[];
public static int pos = 0;//天数
public static int count=0;//吃的数量
public static int GeShu=0;
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
System.out.println("请输入糖果的个数,0~20");
int num = s.nextInt();
// 边界检测
while (num > 20 || num < 0)
{
System.out.println("请输入糖果的个数,0~20");
num = s.nextInt();
}
eatNum = new int[num];
GeShu=num;
calc(num);
}
// 本方法用于递归求解的方法
public static void calc(int num)
{
if(count>GeShu) {
//如果吃的个数大于了给的,那么把吃的吐出来,并且返回的上层
eatNum[pos-1]=0;
return;
}
if (num<=0)
{
//如果糖果个数等于0了说明吃完了
for (int n : eatNum)
{
System.out.print(n + " ");
}
System.out.println();
return;
}
for(int i=1;i<=GeShu;i++) {
eatNum[pos]=i;
pos++;
count+=i;
calc(num-i);
count-=i;
pos--;
}
}
}
-----------------------------------------------------------------运行结果----------------------------------------------------------------------------
这篇关于关于吃糖果问题,一直糖果个数,以及每天能吃的个数求能有多少个方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!