#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void main (void){
int x[100],p,k,n,i,j;
printf("Size:");
scanf("%d", &n);
randomize();
for (i=0; i<n; i++) {
x=random(101)-50;
printf("%3d ",x);
}
printf("\n");
printf("Enter K:");
scanf("%d", &k);
p=k;
for(i=0;i<n;i++){
if(x<n)
p=p-1;
x=x[p+1];
if(x<x[p-1] || x>x[p-1] || x==x[p-1])
printf("%4d", x);
}
getch();
}
Множества [С]
Вот: Напечатать все последовательности длины k из чисел 1..n.
Я так понял, надо чтоб с калвиатуры вводилось число, допустим 3,и должны вывестись все последовательности из 3 чисел(возрастающие, убывающие, одинаковые).
Вот что наклепал :) :
Код:
Есть такая штука - возвратный алгоритм.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void nextStep(const int & k,const int & n, char * x )
{
int p = k-1;
while (!(x < n))
p --;
x = x + 1;
for ( int i = p+1; i <= k ; i++)
x=1;
}
void printStep(const int & k,const char * x )
{
for (int j = 0; j < k; j++)
printf("%d", x[j]);
printf("\n");
}
int main(void )
{
char n = 0;
char k = 0;
char * x;
char * finaly;
printf("Input k: ");
scanf("%d" ,&k);
printf("Input n: ");
scanf("%d" ,&n);
if(k>n)
{
printf("! Error input - k>n \n");
return 0;
}
x = (char *) malloc(sizeof(char)*n);
finaly =(char *) malloc(sizeof(char)*k);
memset(x,1,sizeof(char)*n);
memset(finaly,k,sizeof(char)*k);
do
{
printStep(k,x);
nextStep(k,n,x);
}while( memcmp(x,finaly,sizeof(char)*k) );
printStep(k,x);
free(x);
free(finaly);
return 0;
}
#include <stdlib.h>
#include <string.h>
void nextStep(const int & k,const int & n, char * x )
{
int p = k-1;
while (!(x < n))
p --;
x = x + 1;
for ( int i = p+1; i <= k ; i++)
x=1;
}
void printStep(const int & k,const char * x )
{
for (int j = 0; j < k; j++)
printf("%d", x[j]);
printf("\n");
}
int main(void )
{
char n = 0;
char k = 0;
char * x;
char * finaly;
printf("Input k: ");
scanf("%d" ,&k);
printf("Input n: ");
scanf("%d" ,&n);
if(k>n)
{
printf("! Error input - k>n \n");
return 0;
}
x = (char *) malloc(sizeof(char)*n);
finaly =(char *) malloc(sizeof(char)*k);
memset(x,1,sizeof(char)*n);
memset(finaly,k,sizeof(char)*k);
do
{
printStep(k,x);
nextStep(k,n,x);
}while( memcmp(x,finaly,sizeof(char)*k) );
printStep(k,x);
free(x);
free(finaly);
return 0;
}
Одиссей, спасибо огромное, выручил!