当前位置: 代码迷 >> C语言 >> 高手帮我看下这个程序,谢了,我是菜鸟..
  详细解决方案

高手帮我看下这个程序,谢了,我是菜鸟..

热度:326   发布时间:2008-06-17 15:08:12.0
高手帮我看下这个程序,谢了,我是菜鸟..
原题:
    10个小孩围一圈.老师给10个小孩依次分别给 10块.2块.8块.22块.16块.4块.10块.6块.14块.20块糖.然后所有的孩子同时将手里的糖分一半给右边的孩子(第一个给第二个这样的顺序)糖块为奇数的可以向老师要一块.经过这样几次后,大家手中的糖块一样多?每人几块?



我的解答是:

main()
{
   int a[10]={10,2,8,22,16,4,10,6,14,20}
   int i,j,n;
   for(j=0;a[j]!=a[j+1];j++)
       for(i=0;i<10;i++)
           if(a[i]%2)
              a[i]=a[i+1];
           a[i+1]=a[i+1]+a[i]/2;

}

我就只会编这些了,麻烦哪个大哥帮我修改下,小弟在这里谢过了...
搜索更多相关的解决方案: 糖块  int  

----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define BOOL    int
#define TRUE    1
#define FALSE    0

void give(int a[]);
BOOL check(int a[]);

int main(void)
{
    int a[10] = {10, 2, 8, 22, 16, 4, 10, 6, 14, 20};
    int count = 0;
    while(!check(a))
    {
        give(a);
        count++;
    }
    printf("经过 %d 次交换后,大家手里各有 %d 块糖。", count, a[0]);
    return 0;
}

void give(int a[])
{
    int i, b[10];
    for(i = 0; i < 10; i++)
    {
        if(1 == a[i] % 2)
        {
            b[(i + 1) % 10] = (a[i] + 1) / 2;
            a[i] = (a[i] + 1) / 2;
        }
        else
        {
            b[(i + 1) % 10] = a[i] / 2;
            a[i] = a[i] / 2;
        }
    }
    for(i = 0; i < 10; i++)
    {
        a[i] += b[i];
    }
}

BOOL check(int a[])
{
    int i;
    for(i = 0; i < 9; i++)
    {
        if(a[i] != a[i + 1])
            return FALSE;
    }
    return TRUE;
}

----------------解决方案--------------------------------------------------------
  相关解决方案