Страница 1 из 1

Числа

Добавлено: 06 май 2010, 20:34
topo
Помагите пожалуста

Напечатать по одному разу все последовательности длины n, составленные из чисел 1..k (их количество равно k в степени n)

Надо написать програму на С(С++)

Re: Числа

Добавлено: 13 май 2010, 09:37
Хыиуду
Алгоритм примерно такой: создать массив 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;
И выводим массив на экран или в файл.

Re: Числа

Добавлено: 13 май 2010, 10:58
rrrFer

Код: Выделить всё

#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;
}