n重循环问题: 怎样写一个n重的循环?n是输入的值。语言不限,(最好是C\c++ 、vb.net 或c#的)
发布网友
发布时间:2022-05-12 19:22
我来回答
共3个回答
热心网友
时间:2023-10-19 12:46
谁告诉你这种问题要用n重循环来写了…………………………
要是n=10000,你还不把电脑憋炸了…………………………
编程的时候要尽量减少循环的层数,5以内没关系,但要是你打算弄个n层的循环,那就扯死了……
顺便一说,没有这种写法。
不过就你说的这个问题而言,不是n重,而是2重……无非多设一个“已经选过的数字”的数组,查一下就好了。
for n次循环输出n个数
for 从1到9
if 还没输出过 输出并添加至已输出数组
else 跳过去
这是两重循环,可不是n重循环……不要想n重循环……追问老大,我说了n是个变量,写程序时是不知道的,我只是举例子说n=2,用户可以能输入的是3,4,等
热心网友
时间:2023-10-19 12:46
//c++ code
#include <iostream>
#include <vector>
using namespace std;
// Recursive template function
template <class RanIt, class Func>
void recursive_combination(RanIt nbegin, RanIt nend, int n_column,
RanIt rbegin, RanIt rend, int r_column,int loop, Func func)
{
int r_size=rend-rbegin;
int localloop=loop;
int local_n_column=n_column;
//A different combination is out
if(r_column>(r_size-1))
{
func(rbegin,rend);
return;
}
//===========================
for(int i=0;i<=loop;++i)
{
RanIt it1=rbegin;
for(int cnt=0;cnt<r_column;++cnt)
{
++it1;
}
RanIt it2=nbegin;
for(int cnt2=0;cnt2<n_column+i;++cnt2)
{
++it2;
}
*it1=*it2;
++local_n_column;
recursive_combination(nbegin,nend,local_n_column,
rbegin,rend,r_column+1,localloop,func);
--localloop;
}
}
typedef vector<int>::iterator vii;
void display(vii begin,vii end)
{
for (vii it=begin;it!=end;++it)
cout<<*it;
cout<<endl;
}
int main()
{
vector<int> ca;
ca.push_back (1);
ca.push_back (2);
ca.push_back (3);
ca.push_back (4);
ca.push_back (5);
ca.push_back (6);
ca.push_back (7);
ca.push_back (8);
ca.push_back (9);
vector<int> cb;
int n_input;
cout << "Please input the number n:";
cin>>n_input;
for(int i=0;i<n_input;++i)
cb.push_back(i+1);
recursive_combination(ca.begin (),ca.end(),0,
cb.begin(),cb.end(),0,9-n_input,display);
cout<<"Complete!"<<endl;
return 0;
}
热心网友
时间:2023-10-19 12:46
char x[ n+1 ]= { 0 };
while(1)
{
x[0]++:
for(int i=0; i<n; i++ )
{
if(x[i]==10)
{
x[i+1]++;
x[i]= 0;
}
}
if(x[n]==1)
break;
else
printf("...");
}