Помагите пожалуста
Напечатать по одному разу все последовательности длины n, составленные из чисел 1..k (их количество равно k в степени n)
Надо написать програму на С(С++)
Числа
Алгоритм примерно такой: создать массив A[n], заполнить единицами
Потом выполнять примерно следующее в бесконечном цикле
i=n-1;
while (A==k)
i-=1; //Находим первое число, не равное k
if (i==-1) break;
A+=1;
for(j=i+1; j<n; j++)
A[j]=1;
И выводим массив на экран или в файл.
Потом выполнять примерно следующее в бесконечном цикле
i=n-1;
while (A==k)
i-=1; //Находим первое число, не равное k
if (i==-1) break;
A+=1;
for(j=i+1; j<n; j++)
A[j]=1;
И выводим массив на экран или в файл.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Код: Выделить всё
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
int f(int sn, int n, int k, int *a){
int t;
if(sn==1)
a=new int[n];
if(n<sn){
for(t=0;t<n;t++)
cout<<a[t];
cout<<endl;
return 0;
}
for(t=1;t<=k;t++){
a[sn-1]=t;
f(sn+1,n,k,a);
}
if(sn==1)
delete []a;
return 0;
}
int main(){
int n,k;
cout<<"n: "; cin>>n;
cout<<"k: "; cin>>k;
f(1,n,k,0);
cout<<"press <enter> to exit"<<endl;
cin.get(),cin.get();
return 0;
}
Приглашаю на свой блог о программировании: pro-prof.com