當前位置:首頁 » 編程軟體 » 編程夾詩糖

編程夾詩糖

發布時間: 2022-04-05 06:11:40

㈠ 教編程中有個撕書的片段

死亡詩社

c語言編程,10個小朋友圍成一圈分糖果。

#include<stdio.h>
voidrerange(intx[])
{
inttemp=x[0]/2,l,m;
l=temp;
for(inti=1;i<10;i++)
{
m=x[i]/2;
x[i]=m+temp;
temp=m;
}
x[0]=temp+l;
for(inti=0;i<10;i++)
{
printf("%d",x[i]);
if(x[i]%2)
{
x[i]+=1;
}
}
printf(" ");
}
intmain()
{
inta[10]={12,2,8,22,16,4,10,6,14,20};
intn=5;
for(inti=0;i<n;i++)
{
printf("第%d次調整: ",i+1);
rerange(a);
}
return0;
}//解決請採納

㈢ C語言編程題:分糖果,如圖。沒有思路T^T ,求大神

只有一個簡單的思路,一起討論一下:
第1個小孩給他一個(誰讓他搶在前面呢:)
後面的小孩依次按規矩來,看應該給幾個,可愛值高呢,就加一塊,否則就減一塊。
如果發現減到零了,那就倒回去,前面的人補一塊。當然,不是全部補,只要補發到可愛值較高的地方就可以了。實際只需要計算一個總數,所以可以預先算好,直接加到總數中就行了。

開始時,第1個小孩1塊糖,待補發的數量=0
第2個小孩先給2塊糖,由於可愛值開始變高,待補發的數量=1
每3個小孩先給1塊糖,由於可愛值變低,待補發的數量+1。
第4個小孩可愛值變低,待補發總數+1,照說應該給0塊糖,當然不行,補發一塊,前面的也都補一塊,補3塊。這個待補發數量還不能歸零。當前第4個小孩的糖數應該修正成1。
第5個小孩給2塊糖,由於可愛值開始變高,補發數量歸零=1。
1+2+1+0+(3)+2=9

大體的思路應該就是這個樣子。

㈣ C語言編程怎麼解決分糖問題

分糖果問題

幼兒園有n(<20)個孩子圍成一圈分糖果,老師先隨機地發給每個孩子若干顆糖果,然後按以下規則調整:每個孩子同時將自己手中的糖果分一半給坐在他右邊的小朋友;如共有8個孩子,則第1個將原來的一半分給第2個,第2個將原有的一半分給第3個……第8個將原來的一半分給第1個,這樣的平分動作同時進行;若平分前,某個孩子手中的糖果是奇數顆,則必須從老師那裡要一顆,使他的糖果變成偶數。小孩人數和每個
小孩的初始數由鍵盤輸入。經過多少次調整,使每個孩子手中的糖果一樣多,調整結束時每個孩子有糖果多少顆,在調整過程中老師又新增發了多少顆糖果。

#include<stdio.h>
#defineN20

intn;
intequal(int[]);
intmain()
{
intnum=0,count=0,i,t1,t2;
intchild[N];
printf("請輸入小孩數:");
scanf("%d",&n);
printf("請輸入每個小孩手中的原始糖數:");
for(i=0;i<n;i++)
scanf("%d",&child[i]);
while(!equal(child))
{
for(i=0;i<n;i++)
{
if(child[i]%2!=0)
{
child[i]+=1;
num+=1;
}
}
t1=child[0];
for(i=0;i<n;i++)
{
t2=child[(i+1)%n];
child[(i+1)%n]/=2;
child[(i+1)%n]+=t1/2;
t1=t2;
}
count+=1;
for(i=0;i<n;i++)
printf("%d",child[i]);
printf(" ");
}
printf("經過%d次交換後糖數相等,糖數是%d顆 調整過程中新發%d顆糖 ",count,child[1],num);
return0;
}
intequal(intchild[])
{
inti;
for(i=1;i<n;i++)
if(child[i]!=child[i-1])
return0;
return1;
}

運行結果

㈤ C語言編程 幼兒園的小朋友分吃一堆糖果,第一天吃了一半,又吃了一顆;

#include <stdio.h>

void main()
{
int n = 1;
int i;
int sum = 0;
for(i = 10;i >= 1;i--)
{
sum += n;
n = (n+1)*2;
}
printf("總共有糖%d顆\n",sum);
}

㈥ C語言編程 吃糖果的問題 難!!!!

只有在T組糖果中,當任意的某一種糖果的數量 - 剩餘T-1種糖果的數量之和 ≥ 2的情況下,才不可能吃完。其他任何情況下都可以吃完。

證明: 設糖果有T種, 每一種有X1,X2,X3,......XT 個。
步驟一: 取X1,X2,X3........XT 中最小值Xmin。(即標准地每種吃一個,直到把最少的那一組吃完)
那麼接下來剩餘的糖果種類為T - 1。每一種有X1-Xmin1,X2-Xmin1,X3-Xmin1.......XT-Xmin1 個
步驟二:在剩餘的T-1種糖果中,找出數量最少的。(即X1-Xmin,X2-Xmin.......XT-Xmin中最少的)
那麼剩餘的糖果種類為T-2,每一種有X1-Xmin1-Xmin2,X2-Xmin1-Xmin2.......XT-Xmin1-Xmin2個
重復以上步驟直到最後只剩一種糖果,這個糖果的數量為,Xmax - Xmin1- Xmin2 - Xmin3 ....- Xmin(T-1)
當這個糖果的數量為0的情況下,就可以吃完。不為0的情況下就不可以吃完。
考慮最差情況,即每一次只吃最多的一種糖果和最少的一種糖果。(每次吃2種,其他糖果不吃)
那麼最後剩餘糖果的數量為 Xmax - X1-X2 -X3 ....-XT
當這個值為1時 則可以吃完。大於1時 則吃不完。

接下來編程就非常容易了。
遍歷一遍T組糖果中每種糖果的數量,然後算一下就行了。

㈦ c語言的編程題,求答案。謝謝了

#include<stdio.h>
#include<string.h>
intmain()
{
inti,j,n;
charchain[256];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",chain);
for(j=0;j<strlen(chain);j++)
{
switch(chain[j])
{
case'A':putchar('T');break;
case'T':putchar('A');break;
case'G':putchar('C');break;
case'C':putchar('G');break;
}
}
putchar(' ');
}
return0;
}

㈧ c語言編程:分糖果

都已經回復過了,怎麼還在重復發貼啊~~
#include<stdio.h>

int equal(int child[])//判斷每個小孩手上的糖是否相等
{
int i;
for(i=1;i<10;i++)
if(child[i]!=child[i-1])
return 1;
return 0;
}

void main()
{
int child[10]={10,2,8,22,16,4,10,6,14,20};
int i, tmp0, tmp, sum=0, count=1;
while(equal(child)) {
tmp0= child[0];
for(i=1;i<10;i++) {//循環分糖
if(child[i]%2)
child[i]++;
tmp = child[i];
child[i-1]=child[i-1]/2+tmp/2;//分糖後
}
if(tmp0%2)
tmp0++;
child[9]=child[9]/2+tmp0/2;
count++;
}
printf("經過%d次後,大家手上都有%d塊糖.\n", count, child[0]);
}

㈨ c++拿糖果編程題目,請幫我講解演算法思想或者給出源代碼,謝謝

因為HSP拿走a糖果,小於a的被ZM拿走,b糖果只能在大於a的糖果內選擇。
對於給定一個a,b選擇為大於a的糖果中Wb最小的那個,Wa-Wb的就會取到最大值。
1.我們讓a=1,b=大於1的糖果中取Wb最小值的那個,得到Wa-Wb。
2.我們讓a=2,b=大於2的糖果中取Wb最小值的那個,得到Wa-Wb。
...
然後在這n種Wa-Wb中找到最大值即為所有情況的最大值。
intmax=0;
for(inta=1;a<=n-1;++a){
for(intb=a+1;b<=n;++b){
找到最小的W[b]的下標;
}
intnewMax=W[a]-W[b];
if(newMax>max)max=newMax;
}
//代碼時間復雜度為O(n^2),空間復雜度為O(1)。
如果讓a從n-1到1,反過來,就可以不用每次都從頭尋找最小值的Wb。
intWb=W[n];
intmax=0;
for(inta=n-1;a<=1;--a){
intnewMax=W[a]-Wb;
if(newMax>max)max=newMax;
if(W[a]<Wb)Wb=W[a];
}
//代碼時間復雜度為O(n),空間復雜度為O(1)。

㈩ C語言編程 分糖問題

沒看懂那段程序,我自己寫了段 你看看吧 有問題再來問我哈

#include<stdio.h>
int main()
{
int i=1,j,n; //i為糖數目,j為第幾次分糖,n為分糖時的數目

while(i+=7) //因為第一次分糖減糖數1後要是7的倍數,所以每次假設加上7
{
n=i; //n=假設的糖數
for(j=1;;++j) //開始分糖,j從1開始遞增
{
n-=j; //每次開始減j個糖
if(n<=0) break; // =0為分糖成功,<0就失敗了
if(n%7!=0) break; //不能整除7就每次分1/7的糖,所以要整除7
n-=(n/7); //分1/7的糖
}
if(n==0) break; // =0 分糖成功
}

printf("%d,%d\n", j, i); //輸出分糖次數和糖數 分糖次數即人數
return 0;
}

最後答案人數為6,糖數為36

熱點內容
編程算損耗 發布:2025-01-28 03:33:03 瀏覽:456
sql存儲過程返回多個結果 發布:2025-01-28 03:24:03 瀏覽:463
長安歐尚科賽哪個配置值得購買 發布:2025-01-28 03:19:35 瀏覽:116
c全排列演算法 發布:2025-01-28 03:18:16 瀏覽:754
梵蒂岡頂級時裝ftp 發布:2025-01-28 03:03:36 瀏覽:695
手游腳本有前途嗎 發布:2025-01-28 02:46:55 瀏覽:379
抓包編程 發布:2025-01-28 02:42:41 瀏覽:930
安卓平板上怎麼設置熱點 發布:2025-01-28 02:36:33 瀏覽:718
如何在手機上壓縮圖片 發布:2025-01-28 02:34:09 瀏覽:990
伺服器ip掛上公網 發布:2025-01-28 02:31:15 瀏覽:979