c++编程.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数...
发布网友
发布时间:2024-10-08 10:54
我来回答
共4个回答
热心网友
时间:2024-10-25 12:30
回答过一个相似的问题。
4个数中取3个数,做全排列,所以3!*4 = 24个:
4 2 3
4 3 2
2 4 3
2 3 4
3 2 4
3 4 2
1 4 3
1 3 4
4 1 3
4 3 1
3 4 1
3 1 4
1 2 4
1 4 2
2 1 4
2 4 1
4 2 1
4 1 2
1 2 3
1 3 2
2 1 3
2 3 1
3 2 1
3 1 2
代码:
#include <stdio.h>
#define N 5
void swap(int *a, int *b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
void permutation(int *a, int first, int n)
{
int i;
if(first == n - 1) {
for(i = 0; i < n; i ++) printf("%d ", a[i]);
printf("\n");
return ;
}
for(i = first; i < n; i ++){
swap(a + i, a + first);
permutation(a, first+1, n);
swap(a + i, a + first);
}
}
int main()
{
int a[N] = {1, 2, 3, 4};
int i;
for(i = 0; i < 4; i ++){
swap(a+i, a+4-1);
permutation(a, 0, 3);
swap(a+i, a+4-1);
}
return 0;
}
热心网友
时间:2024-10-25 12:29
#include <iostream>
using namespace std;
int main()
{
int i,j,k;
int ct=0;
for (i=1;i<=4;i++)
for (j=1;j<=4;j++)
{ if(i!=j)
{
for(k=1;k<=4;k++)
{
if(i!=k&&j!=k)
{
num=i*100+j*10+k;
cout<<num;
ct++;
}
}
}
}
cout <<"共有"<<ct<<"个"<<endl;
return 1;
}
热心网友
时间:2024-10-25 12:21
根据数学排列组合 那么 第一位有4种选择 第二位有三种选择 第三位 两种选择
则有 4X3X2 =24 种
[123][124][132][134][142][143]
[213][214][231][234][241][243]
[312][314][321][324][341][342]
[412][413][421][423][431][432]
Press any key to continue
#include <iostream>
using namespace std;
int main()
{
int aa,bb,cc;
for (aa=1;aa<5;aa++)
{
for (bb=1;bb<5;bb++)
{
for (cc=1;cc<5;cc++)
{
if (aa!=bb &&aa!=cc&&bb!=cc)
{
cout<<"["<<aa<<bb<<cc<<"]";
}
}
}
printf("\n");
}
return 0;
}
热心网友
时间:2024-10-25 12:26
#include "stdafx.h"
#include"stdio.h"
#include"conio.h"
main()
{
int i,j,k;
for(i=1;i<5;i++)
for(j=1;j<5;j++)
for(k=1;k<5;k++)
{
if(i!=j&&k!=j&&i!=k)
printf("%d,%d,%d\n",i,j,k);
}
getch();
}