只用C++循环,不用递归,如何让穷举1234这四个数字或者说是字符的排列组合?
只用C++循环,不用递归,如何让穷举1234这四个数字或者说是字符的排列组合?比如像123443211342这样,求来回调换的组合的数目,用循环怎么编写...
只用C++循环,不用递归,如何让穷举1234这四个数字或者说是字符的排列组合?
比如像
1234
4321
1342
这样,求来回调换的组合的数目,用循环怎么编写 展开
比如像
1234
4321
1342
这样,求来回调换的组合的数目,用循环怎么编写 展开
展开全部
1234 1243 1324 1342 1423 1432 2134 2143 2314 2341 2413 2431 3124 3142 3214 3241
3412 3421 4123 4132 4213 4231 4312 4321 一共有24个
Press any key to continue
#include <iostream>
using namespace std;
main()
{
int i,j,k,l,cnt=0;
for (i=1;i<=4;i++)
{
for (j=1;j<=4;j++)
{
for (k=1;k<=4;k++)
{
for (l=1;l<=4;l++)
{
if ( i!=j && i!=k && i!=l
&& j!=k && j!=l
&& k!=l )
{
cout<<i<<j<<k<<l<<" ";
cnt++;
}
}
}
}
}
cout<<"一共有"<<cnt<<"个\n";
}
有问题请追问 满意记得采纳
3412 3421 4123 4132 4213 4231 4312 4321 一共有24个
Press any key to continue
#include <iostream>
using namespace std;
main()
{
int i,j,k,l,cnt=0;
for (i=1;i<=4;i++)
{
for (j=1;j<=4;j++)
{
for (k=1;k<=4;k++)
{
for (l=1;l<=4;l++)
{
if ( i!=j && i!=k && i!=l
&& j!=k && j!=l
&& k!=l )
{
cout<<i<<j<<k<<l<<" ";
cnt++;
}
}
}
}
}
cout<<"一共有"<<cnt<<"个\n";
}
有问题请追问 满意记得采纳
更多追问追答
追问
如果这四个字符是可以任意指定的呢?
比如四个字符都是1
或者1222
这种情况该怎么办?
追答
那就把我的if判断去掉 全排列
我的if判断是去掉 重复的 比如1122 1321 3334 这种
展开全部
#include <iostream>
using namespace std;
void main()
{
int a, b, c, d;
for (a = 1; a <= 4; ++a)
{
for (b = 1; b <= 4; ++b)
{
if (a == b)
{
continue;
}
for (c = 1; c <= 4; ++c)
{
if (a == c || b == c)
{
continue;
}
for (d = 1; d <= 4; ++d)
{
if (a == d || b == d || c == d)
{
continue;
}
cout << a << b << c << d << endl;
}
}
}
}
}
using namespace std;
void main()
{
int a, b, c, d;
for (a = 1; a <= 4; ++a)
{
for (b = 1; b <= 4; ++b)
{
if (a == b)
{
continue;
}
for (c = 1; c <= 4; ++c)
{
if (a == c || b == c)
{
continue;
}
for (d = 1; d <= 4; ++d)
{
if (a == d || b == d || c == d)
{
continue;
}
cout << a << b << c << d << endl;
}
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
using namespace std;
int main(){
int n,i=0,j,k,l,m,count=0;
int a[10];
cout<<"请输入一个4位数:"<<endl;
cin>>n;
while(n!=0)
{
m=n%10;
a[i++]=m;
n/=10;
}
for(j=0;j<i;j++)
for(k=0;k<i;k++)
if(j!=k)
for(l=0;l<i;l++)
if(l!=j&&l!=k)
for(m=0;m<i;m++)
if(m!=j&&m!=k&&m!=l)
{
cout<<a[j]<<a[k]<<a[l]<<a[m]<<endl;
count++;
}
cout<<"排列个数为"<<count;
cout<<endl;
return 0;
}
using namespace std;
int main(){
int n,i=0,j,k,l,m,count=0;
int a[10];
cout<<"请输入一个4位数:"<<endl;
cin>>n;
while(n!=0)
{
m=n%10;
a[i++]=m;
n/=10;
}
for(j=0;j<i;j++)
for(k=0;k<i;k++)
if(j!=k)
for(l=0;l<i;l++)
if(l!=j&&l!=k)
for(m=0;m<i;m++)
if(m!=j&&m!=k&&m!=l)
{
cout<<a[j]<<a[k]<<a[l]<<a[m]<<endl;
count++;
}
cout<<"排列个数为"<<count;
cout<<endl;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
纠正一下: C24 = 4!/2!/2! = 6 n,m 是可以任意输入的,你还要什么然后用循环去穷举,用递归也可以,不过难以理解 用深度优先算法,递归。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询