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語言編程,讓孩子深入學習到機器人程序的代碼編寫,邏輯更強,難度更深;
另外,我們還設有體驗課:
① 通過體驗課,孩子能自己運用搭建方法以及所學知識完成一個獨立項目,並知道學習機器人編程後可以做什麼;
② 體驗課可以讓家長看到我們的機器人課程與其他機構的區別,課程內容對孩子的幫助有哪些,並幫助家長更好地了解課程方向。
希望可以幫到你~(望採納,謝謝~)