Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2016, 08:26   #1
RichardParker
Новичок
Джуниор
 
Регистрация: 29.11.2016
Сообщений: 1
По умолчанию Рекурсия. Комбинация 0 и 1

Необходимо рекурсивно вместо "х" вставить 0 и 1.
Например:
1) xx

00
01
10
11

2) 101x100x11x

10101000110
10101000111
10101001110
10101001111
10111000110
10111000111
10111001110
10111001111

Вот мой набросок и мыли вслух, не могу реализовать

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void _perm(int* to_permute, int len, int* current_perm, int max_len);
void perm(int* list, int len){
 
  _perm(list, len, list, len);
}
 
void _perm(int* to_permute, int len, int* current_perm, int max_len){
  int i;
  
  if(len == 1){ 
    for(i = 0; i < max_len; i++){
      printf("%d ", current_perm[i]);
    }
    printf("\n");
  }
 
  
  else{
    
              /*создаю временную копию строки (temp) с той же самой длиной  
    устанавливаю первую  х в строке на '0';
    вызываю рекурсию проходящую в новую модифицированную строку temp 
 
        устанавливаю первую  х в строке на '0';
    вызываю рекурсию проходящую в новую модифицированную строку temp 
 
    вид вызовы рекурсии " _perm(to_permute + 1, len -1, current_perm, max_len);" */
    
  }
}
 
int main(){
  int nums[10];
  scanf("%s", nums);
  int z = strlen(nums);
  perm(nums, z);
  return 0;
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 29.11.2016 в 09:54.
RichardParker вне форума Ответить с цитированием
Старый 29.11.2016, 21:25   #2
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Код:
#include <iostream>
#include <string>
void p(int n,std::string s) {
  if (n==0) {
  	std::cout<<s<<std::endl;
  }
  else {
  	p(n-1,s+"0");
  	p(n-1,s+"1");
  }
}
int main() {
	p(5,"");
	return 0;
}
остается подсчитать число "x"-ов и вставить 0 или 1.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Комбинация Maksim1979 Общие вопросы C/C++ 3 29.08.2016 15:15
Комбинация клавиш Avetis62 Microsoft Office Excel 8 05.05.2016 12:00
Комбинация Maksim1979 Microsoft Office Excel 14 25.01.2013 00:00
комбинация клавиш unbanned Общие вопросы Delphi 5 13.05.2012 18:40
Комбинация клавишь IVANSour Общие вопросы Delphi 3 18.01.2009 13:58