西单


私信TA

用户名:uq_61408358601

访问量:1754

签 名:

等  级
排  名 12678
经  验 905
参赛次数 0
文章发表 8
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:本题的主要难题在于如何“把小朋友手里糖果的一半分给左手的小朋友”,我们必须使用数组来存储数据,并按照数据结构中类似链表的逻辑把普通数组构成造成一个循环数组,这样,最后一个小朋友才能得到第一个小朋友手里的糖果。

注意事项:注意数组作为函数参数时的定义格式和全局变量的使用。谢谢观看,如有疑问请指教。学习交流QQ1490707770.

参考代码:

#include

int *sum,*re;

int main(){


int n,a[100],b[100],c=0,d=0;

void cest(int a[100],int n,int *re);

void divide(int a[100],int b[100],int n);

void repair(int a[100],int n,int *sum);

sum=&c;

re=&d;

scanf("%d",&n);

for(int i=0;i<n;i++)

scanf("%d",&a[i]);

while(1){

cest(a,n,re);

if(*re==1)//如果不均等则补数再来一轮。 

{divide(a,b,n); 

repair(a,n,sum);

*re=0;}

else 

{printf("%d",*sum);

break;

}}

}

void cest(int a[100],int n,int *re)//判断是否相等 

{for(int j=0;j<n;j++)

if(a[0]!=a[j])

*re=1;

}

void divide(int a[100],int b[100],int n)

{for(int i=0;i<n;i++)

b[i]=a[i]/2;

for(int j=0;j<n;j++)

{if(j==n-1)

a[j]=a[j]+b[0]-b[j];

else

a[j]=a[j]+b[j+1]-b[j];

}

}

void repair(int a[100],int n,int *sum)

{for(int i=0;i<n;i++)

{if(a[i]%2!=0)

{

a[i]=a[i]+1;

*sum=*sum+1;}

}

}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区