Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Множества [С]

12K
17 февраля 2007 года
mortar89
25 / / 17.11.2006
Народ, помогите разобраться, с задачкой.
Вот: Напечатать все последовательности длины k из чисел 1..n.

Я так понял, надо чтоб с калвиатуры вводилось число, допустим 3,и должны вывестись все последовательности из 3 чисел(возрастающие, убывающие, одинаковые).
Вот что наклепал :) :
Код:
#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();

  }
247
17 февраля 2007 года
wanja
1.2K / / 03.02.2003
Есть такая штука - возвратный алгоритм.
361
17 февраля 2007 года
Odissey_
661 / / 19.09.2006
все последовательности длины k из чисел 1..n.

Код:
#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;
}
12K
17 февраля 2007 года
mortar89
25 / / 17.11.2006
Одиссей, спасибо огромное, выручил!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог