1. 背包问题,C语言编程
原始题目: 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是
w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容
量,且价值总和最大。(取自网络)
问题简化: 1. 背包可容纳总重量为M
2. 有n个物品,每个重量为m[0]. m[1]. m[2] ......m[i] 对应每个物品的
价值为s[0]. S[1]. S[2]....s[i] (i<=n)
3. 放入第i个物品,比较m[i]和M的大小,不超过M则记录下当前价值s
4. 最终取得最大值s
实现方法:
定义三个浮点型一维数组float m[[n]和s[n]和y[n] 定义float M,float a,b定义int n,j, int i
请输入背包容量大小M:
please input the number of the things:
please input the value of the things:
把输入数据按顺序分别定义到数组中(若可以的话,把m[n]的数据由小到大排序,判断最小值m[0]和M的大小,若m[0]>M,输出error)
创建一个栈(这里的东西不太懂—-—)
将第一个数据压入栈底,定义i=0,把当前的m[i]赋值给a,s[i]赋值给b,把当前i存放进数组y[n],以后在每次比较过程中,都把较大b值所对应的物品数存放进y[n]中
判断a<M(这里,若在4已经做过,则可省略,第一个数据一定小于M)
判断a+m[++i]<=M,为真,把第i(注意,此时i已经自增了,这个i是数组中的下标)个数据压入栈,赋值a=a+m[++i],比较b和b+s[++i]的大小,赋值b=b+s[++i](理论上,物品价值总该是为正的吧,若是这样的话,不用比较大小了,直接赋新值,直到跳出第一轮循环为止;另外有一种设想,若价值全为正,可以转而把问题这样简化:即给定容量大小和全为正的价值物品,现在想办法让背包放入物品的数量最多 就行了);若为假,转10
如此进行一轮循环,直到出现10,此时b为一轮循环的最大值,return b,y[n]
当a+m[++i]>M,从栈中弹出m[i-2],a=a-m[i-2],,当i原本就小于等于2的时候,则清除栈中数据,转12,判断a+m[i]<=M,为真,比较b和b-s[i-2]+s[i],并把较大值赋给b,继续向下比较,这时候就不用压入栈中了,再定义一个j=1
判断a+m[i+j]<=M,为真,比较b和b-s[i-2]+s[i+j]大小,较大值赋给b,为假,从栈中弹出m[i-3],当i原本就小于等于3的时候,则清除栈中数据,转12,判断a+m[i]<=M,为真,比较b和b-s[i-3]+s[i](注意,这个b一直在被赋予最新值),如此进行第一轮循环,用for语句实现,因为下面还有嵌入
此时栈中没有数据,并且,已经把m[0]为栈底的循环计算完毕,现在开始计算m[1]为栈底的循环,在这一循环,忽略掉m[0],所有可能情况已经在8-11计算过
依此往下,直到栈底被压入的是m[n]为止,计算完毕,输出b,并且输出数组y[n]
碰巧帮同学,也是这个问题,希望能帮助你。
2. 北京天津程序员待遇
1、程序员在“吃软饭”这个行业里是最底层的,在天津平均也就2000-3000,北京能到天津的一倍吧。
2、工作年限也起到重要的作用,不是说能力,而是说敲门砖,刚毕业的很难给到不错的待遇,天津北京都一样。
3、就程序员来说,学的全面不如学的专一。当然,如果都很强就另当别论了。对于各项技术比较全面的,而且不能继续深入的,还是建议往项目管理方向发展。而且这个待遇会上一个档次的,甚至不好说待遇范围。否则,就要在技术上尽量的深入,走技术路线,待遇也是很客观的。
4、对于刚毕业的同学,真的可以不用考虑待遇问题。关键是找准方向,积累经验,快的话能一两年上一个档,慢的话两三年也能啦。
3. 【C语言】编程:从键盘输入所需托运行李的重量,输出托运行李所需的费用
#include <stdio.h>
float charge(float n)
{
if(n<0)
return -1;
else if(n>20)
return 3.0*20+5*(n-20);
else
return 3.0*n;
}
int main()
{
float n;
printf("请输入所需托运的行李重量:");
do
{
scanf("%f",&n);
if(charge(n)>=0)
{
printf("托运%.0f请客行李所需费用为%.0f元 ",n,charge(n));
break;
}
printf("托运行李重量不能小于0千克,请重新输入所需托运的行李重量:");
}while(1);
return 0;
}
4. 天津哪里有合适小学生学习少儿编程的培训课程
天津新东方有小学生少儿编程培训课程。
用一张图带你走进天津新东方斯林姆steam课程:
对于不同年龄段有不同的课程设置、学习目标和学习内容:
6~7岁:孩子的年龄段适合学习我们课程的第三阶段,主要培养孩子的动手能力以及逻辑思维能力,学习工程机械相关原理知识。
8~12岁:孩子适合学习第4阶段开始学习更高级的乐高EV3编程,重点学习智能机器人的程序控制,并且会涉及到大量的实验探究,可直接向国际上的WRO和FLL大赛;
初中生:学习VEX金属机器人的搭建及编程,学习RobotC语言编程,让孩子深入学习到机器人程序的代码编写,逻辑更强,难度更深;
另外,我们还设有体验课:
① 通过体验课,孩子能自己运用搭建方法以及所学知识完成一个独立项目,并知道学习机器人编程后可以做什么;
② 体验课可以让家长看到我们的机器人课程与其他机构的区别,课程内容对孩子的帮助有哪些,并帮助家长更好地了解课程方向。
希望可以帮到你~(望采纳,谢谢~)