当前位置:首页 » 编程软件 » 编程夹诗糖

编程夹诗糖

发布时间: 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

热点内容
160android 发布:2025-05-10 03:03:30 浏览:177
pythonstorage 发布:2025-05-10 02:58:38 浏览:499
如何查看电脑配置显卡参数 发布:2025-05-10 02:37:00 浏览:106
证券交易密码在哪里修改 发布:2025-05-10 02:31:56 浏览:839
javafor是什么意思 发布:2025-05-10 02:23:09 浏览:842
学生云服务器可以搭建网站吗 发布:2025-05-10 02:10:36 浏览:441
共享的文件怎么访问权限 发布:2025-05-10 02:02:49 浏览:166
如何选生信分析服务器 发布:2025-05-10 01:53:11 浏览:409
移动ip案例云dns服务器 发布:2025-05-10 01:51:46 浏览:166
侠盗飞车解压密码是多少 发布:2025-05-10 01:45:04 浏览:713