怎样利用0、1、2、3 这四个数字组合成无重复数字的三位数,列举出所有种组合方式?

小弟有些不会,请各位大佬留意,帮帮忙(^\/^!)

输出:所有满足要求的数字。

【样例输出】

102 103 120 123 130 132 201 203 210 213 230 231 301 302 310 312 320

321

for (int i = 1; i <=3; i++)
for (int j = 1; j <=3; j++)
for (int k = 1; k <=3; k++)
{
if (i!=j&&j!=k&&i!=k)
printf("%d ", i * 100+j*10+k);
}

#include<iostream>
using namespace std;
int main()
{
    for (int i = 1; i <=3; i++)
        for (int j = 0; j <=3; j++)
            for (int k = 0; k <=3; k++)
            {
                if (i!=j&&j!=k&&i!=k)
                    cout<<" "<<i*100+j*10+k;
            }
  



    return 0;
}

使用for循环即可

三个for循环嵌套,每个循环从0到3
分别取出个位十位百位
提取十位的时候判断下当前的数是否等于个位的数
百位同理
最后百位的数*100+十位*10+个位 然后输出就是了

思路就是这,代码思考下 很容易的

1.稍稍修改一下楼上的,后面两个for循环从0开始;
2.不要采纳我的,因为我是从别人答案中修改的;

    for (int i = 1; i <=3; i++)
        for (int j = 0; j <=3; j++)
            for (int k = 0; k <=3; k++)
            {
                if (i!=j&&j!=k&&i!=k)
                    printf("%d ", i * 100+j*10+k);
            }

int main()
{
int x,y,z;
for (x=0;x<=3;x++)
{
for (y=0;y<=3;y++)
{
for (z=0;z<=3;z++)
{
if(x!=y&&y!=z&&z!=x)
{
cout<<x<<y<<z<<endl;

}
}
}
}
return 0;
}

#include <iostream>
using namespace std;
int main(){
    for (int i = 1; i <=3; i++){ 
        for (int j = 0; j <=3; j++){ 
            for (int k = 0; k <=3; k++){
                if (i != j&&j != k&&i != k){ 
                    cout<<i*100+j*10+k<<" ";
                } 
            }
        }
    } 
return 0;
}