求个算法,纠结了好久!
取1-10数中的随意5个数,然后判断其中3个数相加是否为10的倍数,另2个数相加如果也为10的倍数,则返回0,如果不为10的倍数,则返回其个位的值。提取1-10的数可以重复,如可以取5,5,10,10,5;
但如果取好了5个值,不可以重复累加,如1号位的5,用过了,1号位的值就不能再这次循环中使用了。
不知道我说得明白了不,望解答,谢谢!! 本帖最后由 诶、猪 于 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:20 编辑
但如果取好了5个值,不可以重复累加,如1号位的5,用过了,1号位的值就不能再这次循环中使用了。
你的问题描述的我不是很懂。
先谢谢1楼的兄弟,然后回复2楼的兄弟。意思是如果取好了五个数,每个数只能使用一次。不知道这样是否明白? 请问楼主 如果不为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); 基本上看明白了。我想到的是,在取了五个数之后,用三层循环分别作为三个数,第一层循环为 i=0到 不好意思,按错了,没写完不小心按上去了。现在看了5楼的帖子,发现想的完全一样,就不用了。代码写的不错。如果再加上随机函数就更完美了,应该把分给5楼的:lol 学习学习{:1_1:} 我只是回下帖子,LZ莫要打我…… 我只是回下帖子,LZ莫要打我…… zianan 发表于 2014-8-13 15:31
我只是回下帖子,LZ莫要打我……
额。。。。。 观望中!:dizzy:
很不错呀,多谢分享! 还差1个鱼币
页:
[1]