Числа

Ответить
topo
Сообщения: 20
Зарегистрирован: 17 мар 2010, 11:31

Помагите пожалуста

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

Надо написать програму на С(С++)
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Алгоритм примерно такой: создать массив 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;
И выводим массив на экран или в файл.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
rrrFer
Сообщения: 237
Зарегистрирован: 07 сен 2008, 14:15
Контактная информация:

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

#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
Ответить