别认识我 发表于 2020-12-5 22:23:59

有1,2,3,4个数字,能组成多少个互不相同无重复的三位数?都是多少?

求代码、解释、思路。

昨非 发表于 2020-12-5 22:43:58

count = 0
for i in range(1,5):
    for j in range(1,5):
      for k in range(1,5):
            if i!=j and i!=k and j!=k:
                print(i*100+j*10+k)
                count +=1

print("一共%d个数"%count)

jackz007 发表于 2020-12-5 22:46:37

#include <stdio.h>

int main(void)
{
      int d , e , i , j , k                                 ;
      for(e = 0 , i = 1 ; i < 5 ; i ++) {
                for(j = 1 ; j < 5 ; j ++) {
                        for(k = 1 ; k < 5 ; k ++) {
                               if(i != j && k != i && k != j) {
                                       d = i * 100 + j * 10 + k ;
                                       if(e) printf("\t")       ;
                                       printf("%d" , d)         ;
                                       e ++                     ;
                               }
                        }
                }
      }
}
      编译、运行实况
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
123   124   132   134   142   143   213   214   231   234
241   243   312   314   321   324   341   342   412   413
421   423   431   432
D:\00.Excise\C>

昨非 发表于 2020-12-5 22:46:49

本帖最后由 昨非 于 2020-12-5 22:47 编辑

解释:
count用于计数

由4个数组成,所以依次遍历1到4,
拼成三位数,所以三层循环
三位数各不相同,所以加了if判断条件

输出时再将各位数字拼到一起,并计数加一


测试结果

123
124
132
134
142
143
213
214
231
234
241
243
312
314
321
324
341
342
412
413
421
423
431
432
一共24个数

风过无痕1989 发表于 2020-12-5 23:54:37

今天的帖子没有回答够,我也来凑个热闹。一会将程序发过来

风过无痕1989 发表于 2020-12-6 00:23:59

思路看注释

// 有1,2,3,4个数字,能组成多少个互不相同无重复的三位数?都是多少?
#include<stdio.h>
int main()
{
        int i, j, k, m, count = 0;
        for (i = 1;i <= 4;i++)                     // i 百位上的取值
        {
                for (j = 1;j <= 4;j++)                   // i 十位上的取值
                {
                        for (k = 1;k <= 4;k++)               // k 个位上的取值
                        {
                                if (i != j && j != k && k != i)// 确保 i、j、k 不重复
                                {
                                        m = 100 * i + 10 * j + k;    // 进一步限制 i、j、k 在其应该在的位置上
                                        printf("%d ", m);            // 输出组成的三位数
                                        count += 1;                  // 统计有多少个三位数
                                }
                        }
                }
        }
        printf("\n");
        printf("如上输出,能组成 %d 个无重复的三位数", count);
        printf("\n");

}

Dadong丶 发表于 2020-12-6 20:48:46

#include<stdio.h>
int main() {
        int i=1, j=1, k=1;
        for (i = 1; i <= 4 ; i++) {
                for (j = 1; j <= 4 ; j++) {
                        for (k = 1; k <= 4 ; k++) {
                                if (i != j && i != k && j != k) {
                                        printf("%d,%d,%d\n", i, j, k);
                                }
                        }
                }
        }
}

就是一个嵌套for 的嵌套。
页: [1]
查看完整版本: 有1,2,3,4个数字,能组成多少个互不相同无重复的三位数?都是多少?