




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C語言試題 四 6.9 巧分橘子一家農(nóng)戶以果園為生,一天,父親拿出一堆橘子,共2520個,準(zhǔn)備分給他的6個兒子。父親按事先寫在一張紙上的數(shù)字把這堆橘子分完,每個人分到的橘子的個數(shù)都不相同。然后他說:“老大,把你分到的橘子分1/8給老二,老二拿到后,連同原來的橘子分1/7給老三,老三拿到后,連同原來的橘子分1/6給老四,以此類推,最后老六拿到后,連同原來的橘子分1/3給老大,這樣,你們每個人分到的橘子就一樣多了?!眴栃值?人原先各分到多少只橘子。 請將兄弟6人的橘子數(shù)存儲到一維數(shù)組中,并按照下列各式輸出(下面只提供格式,數(shù)據(jù)不準(zhǔn)確):x1=111x2=222x3=333x4=444x5=555x
2、6=666#include<stdio.h>void main()int a6,b6,i;for(i=0;i<6;i+)ai=2520/6;bi=8-i;a0=a0-(a5/(b5-1);for(i=5;i>=1;i-)ai=ai+(ai/(bi-1)-(ai-1/(bi-1-1);a0=a0*b0/(b0-1);for(i=0;i<6;i+)printf("x%d=%dn",i+1,ai);選做題 6.1 大家一起做游戲幼兒園的小朋友們剛學(xué)習(xí)了如何數(shù)數(shù),阿姨在下課時組織大家一起玩游戲。規(guī)則如下:所有的小朋友繞成一圈,順序排號,從第一個小朋友開
3、始報數(shù),凡是報到固定數(shù)字(例如5)的,都退出該游戲,直到只剩下一位小朋友游戲才中止。 每個小朋友都希望自己能有更多的練習(xí)數(shù)數(shù)的機會,所以都希望成為最終被留下的那位?,F(xiàn)在,請大家?guī)托∨笥褌冇嬎阋幌拢诘谝淮闻盘柕臅r候排到第幾位才能成為最終被留下的小朋友。輸入:小朋友的個數(shù)(<=50),要被練習(xí)的數(shù)字輸出:最終被留下的小朋友的序號說明:如“要被練習(xí)的數(shù)字”是5,則每次數(shù)到5的同學(xué)要退出該游戲#include<stdio.h>void main()int N,n,i,s=0,a;scanf("%d%d",&N,&n);for(i=2;i<=
4、N;i+)s=(s+n)%i;a=s+1;printf("The left child is NO %d.n",a);選做題6.2 猜數(shù)字有如下一組數(shù)字,其中每個數(shù)字都在 1 63 之間, 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 632 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 34 35 38 39 42 43 46 47 50 51 54 55 58 59 62 634 5 6 7 12 13
5、14 15 20 21 22 23 28 29 30 31 36 37 38 39 44 45 46 47 52 53 54 55 60 61 62 638 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 61 62 6316 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 6332 33 34 35 36 37 38 39 40 41 42 43
6、 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 現(xiàn)在需要編寫一個程序,當(dāng)從鍵盤輸入某數(shù)字在且僅在哪幾行出現(xiàn)了,該程序可以“猜”出這個數(shù)字是幾。輸入:程序的輸入是一串以空白 符分開的數(shù)字,當(dāng)輸入 0 時表示輸入結(jié)束。輸出:輸出猜到的數(shù)字。#include<stdio.h>#include<math.h>void main()int i,sum=0;doscanf("%d",&i);sum=sum+pow(2,i-1);while(i!=0);printf("%d
7、n",sum);選做題 6.3 小蜜蜂一只小蜜蜂在如下圖所示的蜂窩上爬行。它爬行時,只能從一個格爬到相鄰的大號格子中。例如,從 1 號格子可以爬到 2 號或者 3 號格子,從 2 號則可以爬到 3 號或者 4 號格子。請問從一個格子 a 爬到一個格子 b 一共有多少種可行的路線。 輸入:分別是起始點 a 和終止點 b 的編號。( a 和 b 在 1100 之間,且 a<b 。) 輸出:可行的路線數(shù)目#include<stdio.h>void main()int a,b,x,i;int f100;f1=1;f2=2;scanf("%d%d",&am
8、p;a,&b);x=b-a;if(x=1)printf("%dn",f1);if(x=2)printf("%dn",f2);if(x>=3)for(i=3;i<=x;i+)fi=fi-1+fi-2;printf("%dn",fx);選做題 6.4 數(shù)制轉(zhuǎn)換我們通常使用的都是十進(jìn)制的數(shù)字,但其實在生活中也經(jīng)常會使用其它進(jìn)制。 這個題目會給你兩個不同的數(shù)字,它們不屬于同一進(jìn)制,要求你計算出當(dāng)它們分別處于何種進(jìn)制之中時,兩個數(shù)字相等。譬如 12 和 5 ,在十進(jìn)制下它們是不等的,但若 12 使用 3 進(jìn)制而 5 使用六進(jìn)
9、制或十進(jìn)制時,它們的值就是相等的。因此只要選擇合適的進(jìn)制, 12 和 5 就可以是相等的。 程序的輸入是兩個數(shù)字 M 和 N( 其十進(jìn)制的值不超過 00) ,它們的進(jìn)制在 236 之間。對于十以下的數(shù)字,用 09 表示,而十以上的數(shù)字,則使用大寫的 AZ 表示。 求出分別在 236 哪種進(jìn)制下 M 和 N 相等。若相等則輸出相應(yīng)的進(jìn)制,若不等則輸出錯誤信息。信息的格式見測試用例。#define N 50 #include"string.h" #include"stdio.h" int main()char aN,bN,dN,eN,d0N; int i,j
10、,o,r,g,h,w,t,l,k,max1,max2; double pN,qN=0,uN,vN=0,cN,fN,m,n;for(i=0;i<N;i+)scanf("%c",&ai); if(ai='x20') l=i; break; gets(d); if(d0!='x20')k=strlen(d);goto C;if(d0='x20')strcpy(d0,d);g=strlen(d0);for(i=0;d0i='x20'i+);j=i;for(i=0;i<g-j;i+)di=d0i+j;
11、k=g-j; C:for(i=0;i<l;i+) bi=al-i-1; if(bi<='x39'&&bi>='x30') ci=bi-'0' if(bi<='x5A'&&bi>='x41') ci=bi-'7' for(i=0;i<k;i+) ei=dk-i-1; if(ei<='x39'&&ei>='x30') fi=ei-'0' if(ei<=
12、39;x5A'&&ei>='x41') fi=ei-'7' max1=c0; for(i=1;i<l;i+) if(max1<ci) max1=ci; if(max1=0) max1=1;max2=f0; for(i=1;i<k;i+) if(max2<fi) max2=fi; if(max2=0) max2=1; for(i=max1+1;i<=36;i+)for(j=0;j<l;j+)m=cj;for(g=0;g<j;g+)m=m*i;qi=qi+m;for(i=max2+1;i<
13、=36;i+)for(j=0;j<k;j+)n=fj;for(g=0;g<j;g+)n=n*i;vi=vi+n; for(g=max1+1;g<=36;g+) for(h=max2+1;h<=36;h+) if(qg=vh)w=g,t=h;goto out;for(i=0;i<l;i+)printf("%c",ai);printf(" is not equal to ");for(i=0;i<k;i+)printf("%c",di);printf(" in any base 2.36n&q
14、uot;);goto outs;out:for(i=0;i<l;i+)printf("%c",ai);printf(" (base %d) = ",w);for(i=0;i<k;i+)printf("%c",di);printf(" (base %d)n",t);outs:;選做題 6.5 等值數(shù)列段如果一個數(shù)列中的某一段(至少有兩個元素)的各元素值均相同,則稱之為等值數(shù)列段。等值數(shù)列段中元素的個數(shù)叫做等值數(shù)列段的長度。 輸入:由N個元素組成的整數(shù)數(shù)列A(其中N<=50)輸出:A中長度最大的等值數(shù)
15、列段的始末位置,如果沒有等值數(shù)列段,則輸出No equal number list.說明:始末位置是指數(shù)組下標(biāo),即0表示第一個元素。如果有多個同等長度的等值數(shù)列,只輸出第一個等值數(shù)列的起始位置。當(dāng)在一個LIST中出現(xiàn)兩個等長的連續(xù)串的時候,我們的答案應(yīng)該是第一個等長串。#include<stdio.h>void main()int a50;int f10=0;int n,i,j,k=-1,t,q,s,o,o1,count=1,max=-1;scanf("%d",&n);for(i=0;i<=n-1;i+)scanf("%d",&
16、amp;ai);dofor(j=0;j<=n-1;j+)if(aj=aj+1)count=count+1;k=count;fj+1=fj+1+k;if(aj!=aj+1)count=1;continue;max=k;while(max<k);if(max=-1)printf("No equal number list.n");/for(q=0;q<=n-1;q+)/printf("%d ",fq);/printf("n");elseo=f0;for(s=1;s<=n-1;s+)if(fs>o)o=fs;o
17、1=s;/printf("%d %d",o1,o);/printf("n");printf("The longest equal number list is from %d to %d.n",o1-o+1,o1);選做6.6 郵票組合背景:我們寄信都要貼郵票,在郵局有一些小面值的郵票,通過這些小面值郵票中的一張或幾張的組合,可以滿足不同郵件的不同的郵資。現(xiàn)在,郵局有4種不同面值的郵票。在每個信封上最多能貼5張郵票,面值可相同,可不同。輸入:四種郵票的面值。輸出:用這四種面值組成的郵資最大的從1開始的一個連續(xù)的區(qū)間。說明:如結(jié)果為10
18、,則表明使用4張郵票可組合出1、2、3、4、5、6、7、8、9、10這些郵資。名詞解釋:郵 資:就是你寄東西需要花多少錢。郵票面額:是由國家發(fā)行的具有固定價格的花紙片,被稱為郵票。如果你寄東西,郵局稱了重量,告訴你要240分。這樣你就要貼郵票了。如果現(xiàn)在郵局的郵票有面值為80分、50分、20分和10分的四種,你就可以采用不同的組合得到240的郵資,例如:采用3張80分的可以湊出240分;或者24張10分的湊起來240分也可以。顯然不同郵票的組合都可以得到同樣一種郵資。#include<stdio.h> int neng(int a,int max) int i,j,k,m,n;in
19、t sum;for(i=0;i<5;i+)for(j=0;j<5;j+)for(k=0;k<5;k+)for(m=0;m<5;m+)for(n=0;n<5;n+)sum=ai+aj+ak+am+an;if (sum=max)return 1;return 0;void main()int a5,i;int max=0;a4=0;scanf("%d%d%d%d",&a0,&a1,&a2,&a3);while(1)if(neng(a,max)max+;else break;printf("The max i
20、s %d.n",max-1);選做6.7 十進(jìn)制數(shù)轉(zhuǎn)換為16位二進(jìn)制數(shù)將任一正整數(shù)(<65536)轉(zhuǎn)換為 16 位二進(jìn)制形式。輸入: 正整數(shù) 輸出: 正整數(shù)的 16 位二進(jìn)制數(shù) 友情提示:定義一個整型數(shù)組,數(shù)組有16個元素,保存變換后的二進(jìn)制數(shù)。#include<stdio.h>void main()int n,i;int a16;scanf("%d",&n);if(n>0&&n<65536)for(i=0;i<=15;i+)ai=n%2;n=n/2;for(i=15;i>=0;i-)printf(
21、"%d",ai);printf("n");elseprintf("Invalid input!n");選做題6.9 折半插入排序排序是程序設(shè)計中的重要內(nèi)容之一,據(jù)不完全統(tǒng)計,在一般的數(shù)據(jù)處理程序中,排序占去了處理機時間的四分之一,而在典型的安裝程序中,一半以上的時間用在對表的排序上。常用的排序算法有:直接插入排序,折半插入排序,希爾排序,起泡排序,快速排序,選擇排序,堆排序等。其中直接插入排序的基本操作是將一個記錄插入到已排好序的有序表中,從而得到一個新的、記錄數(shù)增1的有序表。在直接插入排序中,為了找到插入位置,采用了順序查找的方法。
22、為了提高查找速度,可以采用折半查找,這種排序稱折半插入排序。折半查找法先取有序數(shù)組的中間元素與查找值相比較。如相等則查找成功;如查找值大于中間元素,則再取高半部的中間元素與查找值相比較。如查找值小于中間元素,則再取低半部的中間元素與查找值相比較。如此重復(fù)直到查找成功或最終未找到該數(shù)為止。在折半插入排序算法中,由于進(jìn)行關(guān)鍵字比較的次數(shù)比較少,所以算法的效率就比較高。例如:有序列10,90,80,30,20,15。我們進(jìn)行折半插入排序的過程如下:初始(第1趟):有序子序列為空。待排序數(shù) 據(jù)為10,則不需要進(jìn)行關(guān)鍵字比較,直接插入。第2趟:有序子序列為“10”,待排序數(shù)據(jù)為90,進(jìn)行1次比較就可以確
23、定插入位置,得到長度+1的有序子序列“10,90”。此時比較次數(shù)為 1 。第2趟:有序子序列為“10,90”。待排序數(shù)據(jù)為80,取有序序列中間(取整)的元素10進(jìn)行第 1 次比較,80大;則應(yīng)該從“90”這個子序列中進(jìn)行折半插入80,進(jìn)行第 2 次比較,定位應(yīng)該的插入位置,得到有序序列“10,80,90”。此趟比較次數(shù)為 2。第3趟:有序子序列為“10,80,90”。待排序數(shù)據(jù)為30,取有序序列中間的元素80進(jìn)行第 1 次比較,30??;則應(yīng)該從“10”這個子序列中進(jìn)行折半插入30,進(jìn)行第 2 次比較,可以定位應(yīng)該插入的位置,得到新的長度+1的有序子序列。此趟比較次數(shù)為 2。第4趟:有序子序列為
24、“10,30,80,90”。待排序數(shù)據(jù)為20,取有序序列中間的元素30進(jìn)行第 1 次比較,20??;則應(yīng)該從“10”這個子序列中進(jìn)行折半插入20,進(jìn)行第 2 次比較,可以確定應(yīng)該插入的位置。此趟比較次數(shù)為 2。第5趟:有序子序列為“10,20,30,80,90”。待排序數(shù)據(jù)為15,取有序序列中間的元素30進(jìn)行第 1 次比較,15小;則應(yīng)該從“10,20”這個子序列中進(jìn)行折半插入15,取子序列中間的元素10,進(jìn)行第 2 次比較,15大,則應(yīng)該從“20”這個子序列中進(jìn)行折半插入排序,再進(jìn)行 1 次比較就可以確定應(yīng)該插入的位置。此趟比較次數(shù)為 3。此時,完成排序,得到升序序列“10,15,20,30,
25、80,90”。在整個排序過程中進(jìn)行關(guān)鍵字比較的總次數(shù) = 0+1+2+2+2+3 = 10。輸入:數(shù)列中元素個數(shù)(元素數(shù)量<=100)數(shù)列輸出:使用折半插入排序后的有序升序數(shù)列在折半插入排序過程中進(jìn)行關(guān)鍵字比較的次數(shù)說明:輸出個數(shù)列之間用空格分隔#include <stdio.h> int main() int n,a100,b100,i,j,count=0,lengthb=1; scanf("%dn",&n); for(i=0;i<n;i+) scanf("%d",&ai); b0=a0; for(i=1;i&l
26、t;n;i+) int c=0,d=lengthb-1,flag=0; do if(ai>b(c+d)/2) /待插入數(shù)字大于中間值 c=(c+d)/2+1; count+; else if(ai<b(c+d)/2) /待插入數(shù)字小于中間值d=(c+d)/2-1; count+; else count+; flag=1; break; while(c<=d); /處理最后一個數(shù)字 if(flag=0) for(j=i-1;j>=c;j-) bj+1=bj; bc=ai; lengthb+; for(i=0;i<lengthb;i+) printf("%d
27、",bi); if(i!=lengthb-1)printf(" "); printf("n%dn",count); return 0; 8.1 合并字符串輸入兩個已經(jīng)按從小到大順序排列好的字符串,編寫一個合并兩個字符串的函數(shù),使合并后的字符串,仍然是從小到 大排列。輸入:兩個已經(jīng)排好順序(升序)的兩個字符串輸出:一個合并在一起的有序(升序)的字符串要求:設(shè)計一個效率盡量高的算法,對每個字符串只掃描一遍就可以了。如果采用先進(jìn)行串連接,然后再進(jìn)行排序的算法,則效率太低了。#include <stdio.h>#include <st
28、dlib.h>#include <string.h>int main()char a100,b100,t;int k,i,j;gets(a);gets(b);strcat(a,b);k=strlen(a);for(j=1;j<=k;j+)for(i=0;i<k-j;i+)if(ai>=ai+1)t=ai;ai=ai+1;ai+1=t;puts(a);return 0;8.3 刪除重復(fù)字符背景: 輸入一個長度不超過 100 的字符串,刪除串中的重復(fù)字符。輸入:輸入要檢查的字符串,長度不超過100個字符。例如:abacaeedabcdcd。輸出:刪除重復(fù)字符后的
29、字符串。例如:abced。#include <stdio.h>#include <stdlib.h>#include <string.h>int main()char a100,b100;int n,i,j,cnt=1;gets(a);n=strlen(a);b0=a0;for(i=1;i<n;i+)for(j=0;j<i;j+)if(ai=aj)break;if(ai=aj&&i=j)bcnt=ai;cnt+;for(i=0;i<cnt;i+)printf("%c",bi);printf("n
30、");return 0;8.4 刪除字符串中指定字符輸入兩個字符串 s1 和 s2 ,在 s1 中刪除任何 s2 中有的字符。例如, s1 :“ abc123ad ”, s2 :“ a1 ” ,則輸出“bc23d ”。輸入: 兩個字符串 s1 和 s2 輸出: 刪除后的字符串 s1 #include <stdio.h>#include <stdlib.h>#include <string.h>int main()char a100,b100,c100;int x,y,i,j,cnt;scanf("%s",a);scanf(&qu
31、ot;%s",b);x=strlen(b);y=strlen(a);for(j=0;j<x;j+)cnt=0;for(i=0;i<y;i+)if(ai!=bj)ccnt=ai;cnt+;strcpy(a,c);y=cnt;for(i=0;i<cnt;i+)printf("%c",ci);printf("n");return 0;8.5 單詞有多少用空格或換行分開的字符串稱為單詞。輸入多行字符串,直到遇到了單詞 "stop" 時才停止。最后輸出單詞的數(shù)量。用于分割單詞的空格或換行可能多于1個。輸入: 多個字符
32、串 輸出: 單 詞的數(shù)量#include <stdio.h> #include <malloc.h> #include <string.h> void main() int count=0; char *word ; while(1) word=(char *) malloc (sizeof(char)*20); scanf("%s",word); +count; if(0=strcmp(word,"stop") break; free(word); printf("%dn",count-1); 8
33、.6 在指定位置插入字符串輸入兩個字符串 s1 、 s2 和 s1 中任意字符 k ,在 s1 中的指定字符 k 第一次出現(xiàn)的位置處插入字符串 s2 并輸出。輸入: 兩個字符串 s1 、 s2 和 s1 中任意字符 k 輸出: 插入后的字符串 s1 #include<stdio.h>#include<string.h>void main()char s1100,s2100,s3100;char c;int i,j,n,t,count=-1;gets(s1);gets(s2);n=strlen(s1);t=strlen(s2);scanf("%c",&
34、amp;c);for(i=0;i<=n-1;i+)count=count+1;if(c=s1i)break;for(i=0;i<count;i+)s3i=s1i;for(i=count;i<count+t;i+)s3i=s2i-count;for(i=count+t;i<=n+t;i+)s3i=s1i-t;puts(s3);/*for(i=0;i<q;i+)printf("%c",s3i);printf("n");*/選做T 8.1 拱豬計分背景:拱豬是一種很有趣的撲克牌游戲。即使你不知道它的玩法,你也可以由它的計分方式來了
35、解它的趣味性。 假設(shè)在此我們僅考慮四個人的拱豬牌局,本題要求你根據(jù)下面的計分規(guī)則,在牌局結(jié)束時計算四位玩家所得分?jǐn)?shù)。 我們分別以S、H、D及C來代表黑桃,紅心,方塊及梅花,并以數(shù)字1至 13來代表A、2、Q、K等牌點,例如:H1為紅心A,S13為黑桃K。 牌局結(jié)束時,由各玩家持有的有關(guān)計分的牌(計分牌)僅有S12(豬),所有紅心牌,D11(羊)及C10(加倍)等16張牌。其它牌均棄置不計。若未持有這16張牌之任一張則以得零分計算。 若持有C10的玩家只有該張牌而沒有任何其它牌則得+50分,若除了C10 還有其它計分牌,則將其它計分牌所得分?jǐn)?shù)加倍計算。 若紅心牌不在同一家,則H1至H13等13張
36、牌均以負(fù)分計,其數(shù)值為-50, -2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40。而且S12與D11分別以-100及+100分計算。 若紅心牌H1至H13均在同一家,有下列情形: 所有紅心牌以+200分計算。 若S12、D11皆在吃下所有紅心牌之一家,則此玩家得+500分。 而C10還是以前面所述原則計算之。 例一:若各玩家持有計分牌如下: ( 每行代表一玩家所持有之牌 ) S12 H3 H5 H13D11 H8 H9C10 H1 H2 H4 H6 H7H10 H11 H12 則各家之得分依序為: -148 、 +83 、 -138 及 -60 。 例二:若各玩家
37、持有計分牌如下:(第四家未持有任何計分牌)H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13S12 C10D11 則各家之得分依序為: +200 、 -200 、 +100 及 0 。 例三:若有一玩家持有所有 16 張計分牌,則得 +1000 分。其余三家均得零分。 輸入:每個輸入文件由多組測試數(shù)據(jù)構(gòu)成,每組測試數(shù)據(jù)有四行,每一行第一個數(shù)為該玩家所持有計分牌總數(shù),而后列出其所持有之所有計分牌,牌數(shù)與各計分牌均以一個以上的空格分開。相鄰兩組測試數(shù)據(jù)之間不會有空白行,讀到四家持牌數(shù)都為 0 表示文件結(jié)束。 輸出:每一行輸出一組測試數(shù)據(jù)對應(yīng)的結(jié)果,依次輸出各家所得
38、分?jǐn)?shù),共四個整數(shù) ( 含正負(fù)號,0 除外),相鄰兩個整數(shù)之間以一個空格分開,符號和數(shù)字間不可以有空格。每組輸出間不需要有空白行。 #include "stdio.h" int myinput(int card,int number) int i,n; char s5; for(i=0;i<4;i+) scanf("%d",&n); numberi=n; while(n-) scanf("%s",s); switch(s0) case 'S':card13=i;break; case 'D'
39、:card14=i;break; case 'C':card15=i;break; case 'H':s2='0'(cards1-'1'=i):(cards2-'1'+10=i); return number0+number1+number2+number3; int main() int value15=-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40,-100,100, card16, score4=0,0,0,0, number4, i,s, input(); while
40、(myinput(card,number) for(i=0,s=0;i<13;i+) s+=cardi; if(s%13) for(i=0;i<15;i+) scorecardi+=valuei; else if(card0=card13&&card13=card14) scorecard0+=500; else scorecard0+=200; scorecard14+=value14; scorecard13+=value13; scorecard15+=numbercard15=1?50:scorecard15; for(i=0;i<4;i+) prin
41、tf("%s%d%s",scorei>0"+":"",scorei,i=3"n":" "); for(i=0;i<4;i+) scorei=0; return 0; 選作T 8.2 合并果子在一個果園里,多多已經(jīng)將所有的果子打了下來,而且按果子的不同種類分成了不同的堆。多多決定把所有的果子合成一堆。每一次合并,多多可以把兩堆果子合并到一起,消耗的體力等于兩堆果子的重量之和。可以看出,所有的果子經(jīng)過n-1次合并之后,就只剩下一堆了。多多在合并果子時總共消耗的體力等于每次合并所耗體力之和
42、。因為還要花大力氣把這些果子搬回家,所以多多在合并果子時要盡可能地節(jié)省體力。假定每個果子重量都為1,并且已知果子的種類 數(shù)和每種果子的數(shù)目,你的任務(wù)是設(shè)計出合并的次序方案,使多多耗費的體力最少,并輸出這個最小的體力耗費值。例如有3種果子,數(shù)目依次為1,2,9??梢韵葘?、2堆合并,新堆數(shù)目為3,耗費體力為3。接著,將新堆與原先的第三堆合并,又得到新的堆,數(shù)目為12,耗費體力為12。所以多多總共耗費體力=3+12=15??梢宰C明15為最小的體力耗費值。輸入:輸入包括兩行,第一行是一個整數(shù)n(1<n<=10000),表示果子的種類數(shù)。第二行包含n個整數(shù),用空格分隔,第i個整數(shù)ai(1<ai<=10000)是第i種果子的數(shù)目。輸出: 輸出包括一行,這一行只包含一個整數(shù),也就是最小的體力耗費值。輸入數(shù)據(jù)保證這個值小于231。#include<stdio.h>#incl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文化用品租賃業(yè)務(wù)成本控制考核試卷
- 化工產(chǎn)品批發(fā)商市場營銷策略評估與優(yōu)化考核試卷
- 酵素浴培訓(xùn)課件
- 蔬菜大棚出售合同范本
- 環(huán)衛(wèi)運營合同范本
- 培訓(xùn)課件經(jīng)典案例
- 小學(xué)生講紀(jì)律課件
- 房屋修繕賠償合同范本
- 湖南省招投標(biāo)培訓(xùn)課件
- 成都高新技術(shù)產(chǎn)業(yè)投資協(xié)議
- 《物流無人機垂直起降場選址與建設(shè)規(guī)范(征求意見稿)》
- CAS鋁鎂質(zhì)保溫施工施工方法及工藝技術(shù)
- 北師大版四年級下冊認(rèn)識三角形和四邊形
- 2023風(fēng)電機組預(yù)應(yīng)力混凝土塔筒與基礎(chǔ)結(jié)構(gòu)設(shè)計標(biāo)準(zhǔn)
- 統(tǒng)編版小學(xué)語文四年級下冊《十萬個為什么》整本書閱讀(教案)
- GB/T 748-2023抗硫酸鹽硅酸鹽水泥
- 《傳染病》PPT課件完美版-2024鮮版
- 投資項目可行性研究指南
- 糖尿病膳食指南2024
- 健康證用工合同
- 2024年事業(yè)單位考試?yán)ッ魇蠥類《職業(yè)能力傾向測驗》深度預(yù)測試題含解析
評論
0/150
提交評論