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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2017, 00:37   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию Задача на перебор

Добрый вечер. Есть следующее задание (на изображении).

Мой вариант решения на с++ приблизительно такой:

Код:
#include "stdafx.h"
#include <iostream>

using namespace std;


int main()
{
	int arr[15]={6,8,1,4,3,1,7,2,3,9,4,1,4,1,4};
	int c[240],k=0,n=0;
	for(int i=0;i<226;i++)
	{
		c[i]=0;
	}
	
	for(int i=0;i<15;i++)
	{
		for(int j=0;j<15;j++)
		{
			c[k]=arr[i]*10+arr[j]; //соединяю все данные цифры в двухзначные числа 
			k++;
		}
	}
	for(int i=225;i<240;i++)
	{
		c[i]=arr[n]; //также добавляю в этот массив цифры с базового массива
		n++;
	}
	
	for(int i=0;i<240;i++)
		cout<<c[i]<<"\t";

	for(int i=0;i<240;i++) //начинается перебор для каждого числа из равенств
	{
		for(int j=i;j<240;j++)
		{
			for(int z=j;z<240;z++)
				for(int a=z;a<240;a++)
					for(int b=a;b<240;b++)
						for(int v=b;v<240;v++)
								for(int a1=v;a1<240;a1++)
					for(int b1=a1;b1<240;b1++)
						for(int v1=0;v1<240;v1++)
			{
				if((c[i]+c[j]==c[z])&&(c[a]*c[b]==c[v])&&(c[a1]*c[b1]==c[v1])) //если подобранные числа удоволетворяют условие
				{
						cout<<c[i]<<"+"<<endl; //выводим их на экран
						cout<<c[j]<<"="<<endl;
						cout<<c[z]<<endl<<endl;

						cout<<c[a]<<"*"<<endl;
						cout<<c[b]<<"="<<endl;
						cout<<c[v]<<endl<<endl;

						cout<<c[a1]<<"*"<<endl;
						cout<<c[b1]<<"="<<endl;
						cout<<c[v1]<<endl<<endl;
				}
			}
		}
	}
	

	
	return 0;
}
Хотела спросить правильно ли я вообще думаю, т.к результата выполнения этой программы я так и не дождалась (долгое время выполнения).
Изображения
Тип файла: jpg Снимок.JPG (20.0 Кб, 103 просмотров)
Вероника99 вне форума Ответить с цитированием
Старый 03.12.2017, 02:05   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Вероника99 Посмотреть сообщение
правильно ли я вообще думаю
Я думаю, что неправильно. Я полагаю, фраза "в каждом равенстве перемешаны цифры" означает, что цифры в пределах одного равенства переставлены местами.

То есть, например, для 2-го равенства нужно проверить 24 варианта:
Код:
7 * 2 = 39
2 * 3 = 79
2 * 3 = 97
2 * 7 = 39
...
9 * 7 = 32
Black Fregat вне форума Ответить с цитированием
Старый 03.12.2017, 02:22   #3
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Забавная задача. Первый пример имеет 3 принципиально разных решения
Код:
16 + 18 = 34
13 + 48 = 61
18 + 43 = 61
(и ещё 3 от перестановки слагаемых)
Black Fregat вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на перебор Turbo Pascal nobody_nohead Помощь студентам 20 01.12.2016 20:33
Задача перебор APEJl Паскаль, Turbo Pascal, PascalABC.NET 2 30.11.2013 19:24
Задача (перебор) Aerowalk Помощь студентам 2 22.11.2010 19:28
Задача (наверное на перебор) Witaliy Паскаль, Turbo Pascal, PascalABC.NET 4 18.01.2009 18:11
Задача на большой перебор МаксимNEWProgramm Паскаль, Turbo Pascal, PascalABC.NET 2 06.04.2008 18:15