开发者

C语言中组成不重复的三位数问题

开发者 https://www.devze.com 2022-12-02 14:41 出处:网络 作者: 吧唧吧唧orz
目录C语言组成不重复的三位数(1)通用思路(2)排除思路打印1234组成的不重复三位数C语言组成不重复的三位数
目录
  • C语言组成不重复的三位数
    • (1)通用思路
    • (2)排除思路
  • 打印1234组成的不重复三位数

    C语言组成不重复的三位数

    对于这个问题,我有两种解决思路

    • 第一种较为简单
    • 第二种较为复杂

    (1)通用思路:根据数组中的数字自由组合成三位数

    (2)找出最小数和最大数并以此为循环边界(目的在于缩小循环的范围,提高效率),之后根据不断循环,将不符合要求的数字排除,在某些题中会简便许多

    ·由1,2,3,4组成的不重复的三位数

    (1)www.devze.com通用思路

    #include <stdio.h>
    
    intandroid main()
    {
     int a[4]={1,2,3,4};
     int i,j,k,count=0;
     for (i=0;i<4;i++)
     {
      for (j=0;j<4;j++)
      {
       for (k=0;k<4;k++)
        if (i!=j&&i!=k&&k!=j)
        printf("%d\n",a[i]*100+a[j]*10+a[k]);
      }
     }
     return 0;
    }

    (2)排除思路

    #include <stdio.h>
    
    int main()
    {
     int a[3],i,j,k;
     for (i=123;i<=432;i++)
     {
      int word = 1;
      a[0]=i%10;编程客栈a[1]=i/10%10;a[2]=i/100;
      for (j=0;j<3;j++)
      {
       if (a[j]==1||a[j]==2||a[j]==3||a[j]==4)
       {
       for (k=0;k<3&&j!=k;k++)
       {
        if (a[k]==a[j])
        {
         word = 0;
         break;
      开发者_Go入门  }
       }
        }
        else
        {
         word = 0;
         break;
        }
      
        if (word == 0)
       break;
     }
    
      if (word)
      printjavascriptf("%d\n",i);
     }
     return 0;
    }

    ·某些题(适用于排除思路)

    用1,2,3,.....,9组成三位数abc,def,ghi,每个数字恰好使用一次,要求 abc:def:ghi=1:2:3.按照“abc def ghi”的格式输出所有解,每行一个解。

    #include <stdio.h>
    
    int main()
    {
      int abc,def,ghi;
      int i,k,a[9],word =1;
      for (abc=123;abc<=329;abc++)
      {
        def = abc * 2;
        ghi = abc * 3;
        a[0]=abc%10;a[1]=abc/10%10;a[2]=abc/100;
        a[3]=def%10;a[4]=def/10%10;a[5]=def/100;
        a[6]=ghi%10;a[7]=ghi/10%10;a[8]=ghi/100;
        for (k=0;k<9;k++)
        {
          word = 1;
          for (i=0;i<9&&i!=k;i++)
          {
            if (a[k]==a[i]||a[i]==0)
            {
              word = 0;
              break;
            }
          }
          if (word == 0)
          break;
        }
        if (word)
        printf("%d,%d,%d\n",abc,def,ghi);
       
      }
    }

    打印1234组成的不重复三位数

    1、每位数都遍历一次,就是个位出现1234,十位出现1234,百位出现1234

    2、去重复,个位十位百位不能相等

    3、复合式遍历,统计这种遍历得到了多少回

    var count = 0;
    for(i=1;i<=4;i++){
        for(j=1;j<=4;j++){
            for(k=1;k<=4;k++){
                if(i!=j &&am编程客栈p; j!=k && k!=i){
                count++;
                console.log(i+""+j+""+k);
                }
            }
        }
    }
    console.log("这样的三位数有"+count+"个");

    C语言中组成不重复的三位数问题

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号