在线求助决赛算法

[复制链接]
查看11 | 回复10 | 2021-1-27 05:07:22 | 显示全部楼层 |阅读模式
算法题目:从0-24可重复选择10个数字之和等于24的排列组合有多少种?要求用java写,在线等
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:07:22 | 显示全部楼层
这也是动态规划?
回复

使用道具 举报

千问 | 2021-1-27 05:07:22 | 显示全部楼层
从大到小,剪枝遍历
回复

使用道具 举报

千问 | 2021-1-27 05:07:22 | 显示全部楼层
可以保存中间结果,那跟动态规划差不多了
回复

使用道具 举报

千问 | 2021-1-27 05:07:22 | 显示全部楼层
用深度优先遍历+剪枝,代码如下
publicclassTest{
/**
*可取的数量
*/
privatestaticintMAX_LEN=10;
/**
*可选择的最大值
*/
privatestaticintMAX_VALUE=24;
/**
*预期值
*/
privatestaticintVALUE=24;
/**
*结果
*/
privatestaticlongRESULT;
/**
*储存结果、验证
*/
//privatestaticint[]results=newint[MAX_LEN];
publicstaticvoidmain(String[]args){
next(0,0);
System.out.println(RESULT);
}
publicstaticvoidnext(intsum,intcurrentLen){
if(currentLen+1==MAX_LEN){
if(VALUE-sum>0){
RESULT++;
//results[currentLen]=VALUE-sum;
//print();
}
return;
}
for(inti=0;i
回复

使用道具 举报

千问 | 2021-1-27 05:07:22 | 显示全部楼层
引用4楼落幕安魂的回复:用深度优先遍历+剪枝,代码如下
可重复选取呀:
即可为:00000000024,
也可为:00000000123,
排列组合呀:
00000000123,也可为10000000023,也可为01000000023,
这是一个数学计算的问题,不需要代码遍历什么的。
回复

使用道具 举报

千问 | 2021-1-27 05:07:22 | 显示全部楼层
引用5楼GKatHere的回复:Quote: 引用4楼落幕安魂的回复:
用深度优先遍历+剪枝,代码如下

可重复选取呀:
即可为:00000000024,
也可为:00000000123,
排列组合呀:
00000000123,也可为10000000023,也可为01000000023,
这是一个数学计算的问题,不需要代码遍历什么的。

我的算法不能重复取值吗
回复

使用道具 举报

千问 | 2021-1-27 05:07:22 | 显示全部楼层
答案是240吗
回复

使用道具 举报

千问 | 2021-1-27 05:07:22 | 显示全部楼层
答案错了应该是10的24方
我是这样考虑问题
设函数F(x)为从0-24可重复选择10个数字之和等于X的解种数
f1=10(10个位置选个1出来所以10种)
f2=的话是再f1的所有组合中抽出一种比如100...然后十个位置上任选一个位置+1那数字之和就是等于2了所以种数应该是10*10
f3=的话是再f2的所有组合中抽出一种然后十个位置上任选一个位置+1那数字之和就是等于3了所以种数应该是发f(2)*10
...
fn=10^n
回复

使用道具 举报

千问 | 2021-1-27 05:07:22 | 显示全部楼层
引用6楼落幕安魂的回复:我的算法不能重复取值吗
结果不对。

/**
*可取的数量
*/
staticconstintMAX_LEN=10;
/**
*可选择的最大值
*/
staticconstintMAX_VALUE=24;
/**
*预期值
*/
staticconstintVALUE=24;
/**
*结果
*/
staticlongRESULT=0;
//迭代次数
staticintRN_=0;
/**
*储存结果、验证
*/
//staticint[]results=newint[MAX_LEN];
voidnext_(intsum,intcurrentLen){
if(currentLen+1==MAX_LEN){
if(VALUE-sum>0){
RESULT++;
//results[currentLen]=VALUE-sum;
//print();
}
RN_++;
return;
}
for(inti=0;iv)return0;
inta=f,ae=f+t/n;
intr=0;
for(;a
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行