有1,2,3,4个数字,组成多少个互不相同且无重复的数字并输出;求问这里的互不相同无重复数字该怎么理解啊?像出现1111这种和1213这种的吗?还是其实是指111这种,有点懵
int main()
8 {
9 int g,s,b;
10 for(g=1;g<5;g++)
11 {
12 for(s=1;s<5;s++)
13 {
14 for(b=1;b<5;b++)
15 {
16 if((g!=s)&&(g!=b)&&(s!=b))
17 printf("%d%d%d\n",b,s,g);
18 }
19 }
20 }
21 return 0;
22 }
呐,这个是给出的源代码,难道是我题都理解错了,组成的是三位数?而且判断重复就比一下个位十位百位就行了?我看到的是假答案?
答案为什么是三个循环嵌套,那就表明只求三位数的,你是不是没有描述清楚问题。
你的源代码描述的是组成三位数,且1;2;3;4每个数字只能用一次。也就是111这种事不行的。123 234 432这样的都可以。解决的办法很多。。。。实际上这是个概率问题。上面的代码的思路是:一个三位数。第一个数有4中可能。当第一个数是1时,第二个数可能是2,3,4.三种可能。当第二个数也确定了,例如是2,第三个数就只有3,4这两种可能了。上面的代码中定义的g s b就是分别表示第一位数,第二位,第三位。然后循环嵌套打印。但是这个代码不完全对。你的问题是组成多少个互不相同且无重复的数字并输出。。。他只吧所有的数找出来打印了。并未统计有多少个。。自己定义个count当计数器,然后在最里面的一个循环里,做自増操作。count++;最后在循环外打印一边count即可。有问题可以继续探讨。
例如可以是123,231,321,等等出现的是1,2,3,但是他们不是相同的数,即不是重复的