udsky 发表于 2012-2-3 09:06:48

求个算法,纠结了好久!

取1-10数中的随意5个数,然后判断其中3个数相加是否为10的倍数,另2个数相加如果也为10的倍数,则返回0,如果不为10的倍数,则返回其个位的值。
提取1-10的数可以重复,如可以取5,5,10,10,5;
但如果取好了5个值,不可以重复累加,如1号位的5,用过了,1号位的值就不能再这次循环中使用了。
不知道我说得明白了不,望解答,谢谢!!

诶、猪 发表于 2012-2-3 09:06:49

本帖最后由 诶、猪 于 2012-2-3 10:52 编辑

int iiteam(int * info)
{
    int i3,i2,result;
    i3=info+info+info;    i2=info+info; if(0==(i3%10)){result=(0==(i2%10))?0:(i2%10);return result;};
    i3=info+info+info;    i2=info+info; if(0==(i3%10)){result=(0==(i2%10))?0:(i2%10);return result;};
    i3=info+info+info;    i2=info+info; if(0==(i3%10)){result=(0==(i2%10))?0:(i2%10);return result;};
    i3=info+info+info;    i2=info+info; if(0==(i3%10)){result=(0==(i2%10))?0:(i2%10);return result;};
    i3=info+info+info;    i2=info+info; if(0==(i3%10)){result=(0==(i2%10))?0:(i2%10);return result;};
    i3=info+info+info;    i2=info+info; if(0==(i3%10)){result=(0==(i2%10))?0:(i2%10);return result;};
    i3=info+info+info;    i2=info+info; if(0==(i3%10)){result=(0==(i2%10))?0:(i2%10);return result;};
    i3=info+info+info;    i2=info+info; if(0==(i3%10)){result=(0==(i2%10))?0:(i2%10);return result;};
    i3=info+info+info;    i2=info+info; if(0==(i3%10)){result=(0==(i2%10))?0:(i2%10);return result;};
    return -1;
}

int main(void)
{
    int a={5,5,2,8,10};
    printf("%d\n",iiteam(a));
    getch();
}


不知道楼主是不是表达的这个意思,本人是初学者,若不是这个意思还请见谅....   不为其他,只为共同进步!!!

论坛有限制,:(这个表示的是 冒号":"

Mr.C 发表于 2012-2-3 13:19:59

本帖最后由 Mr.C 于 2012-2-3 13:20 编辑

但如果取好了5个值,不可以重复累加,如1号位的5,用过了,1号位的值就不能再这次循环中使用了。

你的问题描述的我不是很懂。

udsky 发表于 2012-2-3 21:20:42

先谢谢1楼的兄弟,然后回复2楼的兄弟。意思是如果取好了五个数,每个数只能使用一次。不知道这样是否明白?

wangyexin 发表于 2012-2-4 09:52:19

请问楼主 如果不为10的倍数,则返回其个位的值。 这里会有多个解,取哪个?//暴力枚举
int d,i,j,k,s=0,sum,flag,ans;
       
        for(i=0;i<5;i++)
        {
                scanf("%d",&d);
                s+=d;
        }
        flag=0;
        for(i=0;i<5;i++)
        {
                sum=d;
                for(j=i+1;j<5;j++)
                {
                        sum+=d;
                        for(k=j+1;k<5;k++)
                        {
                                sum+=d;
                               
                                if(sum%10==0&&(s-sum)%10==0)flag=1;
                                ans=sum%10;
                                if(flag)break;
                        }
                        if(flag)break;
                }
                if(flag)break;
        }
        printf("%d",ans);

疯子 发表于 2012-2-6 16:49:34

基本上看明白了。我想到的是,在取了五个数之后,用三层循环分别作为三个数,第一层循环为 i=0到

疯子 发表于 2012-2-6 16:58:25

不好意思,按错了,没写完不小心按上去了。现在看了5楼的帖子,发现想的完全一样,就不用了。代码写的不错。如果再加上随机函数就更完美了,应该把分给5楼的:lol

黄种人 发表于 2014-8-13 08:57:21

学习学习{:1_1:}

zianan 发表于 2014-8-13 15:30:58

我只是回下帖子,LZ莫要打我……

zianan 发表于 2014-8-13 15:31:30

我只是回下帖子,LZ莫要打我……

zianan 发表于 2014-8-13 15:32:07

zianan 发表于 2014-8-13 15:31
我只是回下帖子,LZ莫要打我……

额。。。。。

黑暗漩涡 发表于 2014-8-15 11:26:59

观望中!:dizzy:

2002wmj 发表于 2014-9-8 23:35:50


很不错呀,多谢分享!

y290176346 发表于 2015-9-16 22:00:56

还差1个鱼币
页: [1]
查看完整版本: 求个算法,纠结了好久!