给你一堆数,从中选若干个数凑出7的倍数,输出其中最大的那个7的倍数 如何编程解决?
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/08/28 04:30:18
给你一堆数,从中选若干个数凑出7的倍数,输出其中最大的那个7的倍数 如何编程解决?
是从中选若干个数求和,看这个和是不是7的倍数,然后选最大的.不是在这些数里面选7的倍数
只是求个思路,假定这些数都已知,数目也已知,关键在怎么找符合条件的最大数
2楼不对啊,比如3 4 5 7凑7的倍数照你的算法是7,但是应该是用3 4 7凑出14才对
是从中选若干个数求和,看这个和是不是7的倍数,然后选最大的.不是在这些数里面选7的倍数
只是求个思路,假定这些数都已知,数目也已知,关键在怎么找符合条件的最大数
2楼不对啊,比如3 4 5 7凑7的倍数照你的算法是7,但是应该是用3 4 7凑出14才对
楼上的解法都正确,但是数字多于30个的时候就会很慢!
这是背包问题的变形~!背包才是正解~
先求出所有数字的和 和是7的倍数就最好啦~
不是的话就找出比和小又最接近和的7的倍数 然后背包一下看行不行~
再不行就试次小的数 一直试下去直到行为止 如果一直到7都不行就无解了!
如果使用备忘录算法 由于用的是同一个数组 所以时间复杂度不会很高~
几百几千个数字都可以秒杀~
你找一下背包问题,到处都有详细解答~
跟这个问题类似 只要稍微改一下题目和代码就行
改了之后思路如下 帮你换成c语言了 给分啊~!
有一个箱子容量为v(正整数,o≤v≤20000),同时有n个物品(o≤n≤30),每个物品有一个体积(正整数).要求从 n 个物品中,任取若千个装入箱内,使箱子的剩余空间为零.(这里的v就是你的s,这里的n就是你的n)
l 搜索方法 (一堆数的数目很少的时候就可以直接搜索 否则还是要用动归)
void search(int k,int v) {搜索第k个物品,剩余空间为v}
{
int i,j;
if(v=best return; // s[n]为前n个物品的重量和
if(kw[k]) search(k+1,v-w[k]); // w[n]为第n个物品的重量
search(k+1,v);
}
}
best为全局变量,表示箱子的剩余空间的最小值,初始值为设为很大的正数就好
所以 search(n,v)后 best为0则表示有解
2 DP 动态规划(迭代法)
F[I,j]为前i个物品中选择若干个放入使其体积正好为j的标志,为布尔型.
实现:将最优化问题转化为判定性问题
F [I][j] =( F [ I-1 ][ j-w[I] ] || F [ I-1 ][ j ] )(w[I]
这是背包问题的变形~!背包才是正解~
先求出所有数字的和 和是7的倍数就最好啦~
不是的话就找出比和小又最接近和的7的倍数 然后背包一下看行不行~
再不行就试次小的数 一直试下去直到行为止 如果一直到7都不行就无解了!
如果使用备忘录算法 由于用的是同一个数组 所以时间复杂度不会很高~
几百几千个数字都可以秒杀~
你找一下背包问题,到处都有详细解答~
跟这个问题类似 只要稍微改一下题目和代码就行
改了之后思路如下 帮你换成c语言了 给分啊~!
有一个箱子容量为v(正整数,o≤v≤20000),同时有n个物品(o≤n≤30),每个物品有一个体积(正整数).要求从 n 个物品中,任取若千个装入箱内,使箱子的剩余空间为零.(这里的v就是你的s,这里的n就是你的n)
l 搜索方法 (一堆数的数目很少的时候就可以直接搜索 否则还是要用动归)
void search(int k,int v) {搜索第k个物品,剩余空间为v}
{
int i,j;
if(v=best return; // s[n]为前n个物品的重量和
if(kw[k]) search(k+1,v-w[k]); // w[n]为第n个物品的重量
search(k+1,v);
}
}
best为全局变量,表示箱子的剩余空间的最小值,初始值为设为很大的正数就好
所以 search(n,v)后 best为0则表示有解
2 DP 动态规划(迭代法)
F[I,j]为前i个物品中选择若干个放入使其体积正好为j的标志,为布尔型.
实现:将最优化问题转化为判定性问题
F [I][j] =( F [ I-1 ][ j-w[I] ] || F [ I-1 ][ j ] )(w[I]
从2,3,5,7,这四个数中选3个数组成三位数,其中是3的倍数中最小的是(),最大的是();是5的倍数中最小的是(),最
从4,5,6,7,8,9中选出若干个数,使它们的和是3的倍数而不是5的倍数,有几种方法?又这6个数组成的能被667整除的
一个数的倍数的个数是( )的,其中最小的倍数是( ),( )最大的倍数.
从0.1.3.5.7这五个数中选4个数组成同时是2.3.5.的倍数的四位数,其中最小的是几,最大的是几?
从0,2,6,7,9这五个数字中选出四个,组成是2,3,5的倍数的四位数,其中最大的是( ).
从 0 3 5 7 这4个数中选出三个组成三位数.(1)组成的数是2的倍数
从7个数中选出两个或以上的数相加,使和为3的倍数,共有多少种不同选法?
在0,7,5,1中选出3个数,组成三位数,既是5的倍数,又是2的倍数的是(只需要三个数).
从0、5、6、7四个数中选出3个数字,既是2的倍数,又是3的倍数?能组出几个来.
从2,6,7,5四个数中选出三个组成一个三位数,是它是3的倍数有哪些
从3、2、0、7中选3个数按要求组成三位数.奇数:偶数:2的倍数:5的倍数:2和3的倍数:
从0.5.6.7四个数中选出两个,按要求组2个数,要求组成偶数.奇数.5的倍数.组成的是2的倍数,也是5的倍数!