【发布时间】:2021-11-18 22:03:25
【问题描述】:
我创建了一些代码,每当您将数字输入pinCombo(x)(例如pinCombo(3))时,输出将是:
000
001
002
……直到达到 999。
所以,pinCombo(4) 的输出将是:
0000
0001
....
....
9999
这是我的代码:
#include <iostream>
using namespace std;
void pinCombo(int x)
{
int a,b,c,d,e,f,g,h,i,j;
if(x>=1)
for (a = 0;a<10;a++)
{
if(x>=2)
for (b = 0;b<10;b++)
{
if(x>=3)
for (c = 0;c<10;c++)
{
if(x>=4)
for (d = 0;d<10;d++)
{
if(x>=5)
for (e = 0;e<10;e++)
{
if(x>=6)
for (f = 0;f<10;f++)
{
if(x>=7)
for (g = 0;g<10;g++)
{
if(x>=8)
for (h = 0;h<10;h++)
{
if(x>=9)
for (i = 0;i<10;i++)
{
if(x>=10)
for (j = 0;j<10;j++)
{
cout<<a<<b<<c<<d<<e<<f<<g<<h<<i<<j<<endl;
}if(x==9)cout<<a<<b<<c<<d<<e<<f<<g<<h<<i<<endl;
}if(x==8)cout<<a<<b<<c<<d<<e<<f<<g<<h<<endl;
}if(x==7)cout<<a<<b<<c<<d<<e<<f<<g<<endl;
}if(x==6)cout<<a<<b<<c<<d<<e<<f<<endl;
}if(x==5)cout<<a<<b<<c<<d<<e<<endl;
}if(x==4)cout<<a<<b<<c<<d<<endl;
}if(x==3)cout<<a<<b<<c<<endl;
}if(x==2)cout<<a<<b<<endl;
}if(x==1)cout<<a<<endl;
}
}
using namespace std;
int main()
{
pinCombo(3);
return 0;
}
有没有办法在不使用嵌套循环或不使用许多变量的情况下创建这样的程序?
【问题讨论】:
-
是的,使用一个变量和
%(模数) -
有一些I/O manipulators 可用于使用单个循环执行您想要的操作。现在你只需要想出一种方法将
3转换为最大数999(或者可能是1000,即10提高到3的幂)。 -
我想知道这个answer 是否有用
-
您还可以使用具有单个循环的递归函数。从技术上讲,每个递归调用都会执行一个循环,这是一种嵌套形式,但在代码方面只会编写一个循环。
标签: c++ algorithm brute-force