Есть у меня числовой ребус, который надо решить. Код нам давали от паскаля (при надобности могу тоже перепечатать), через рекурсию. При объяснении задания определили, что требуется алгоритм размещения без повторений...
А обучают нас на С++. Код вроде бы перенесла (не исключаю, что могла где-то напутать с логикой, но прога компилируется). И вот проблема. Так-то я условия определила...Но вот как их записать-то (формализованную запись и условия) - я теряюсь. Наверняка напутала.
Прошу помощи)
А если кто-то будет так добр, что согласится мне еще объяснить алгоритмы сочетания, то тоже перепечатаю.
Заранее спасибо, если откликнетесь ^^
Сам ребус: (как оформить по-человечески не нашла)
Ц/Д + И/ЕС = ФР/ЯТЬ
Код: Выделить всё
#include "stdafx.h"
#include <iostream>
#include "conio.h"
using namespace std;
int r=10, n=10, a[10], d[10]={0,1,2,3,4,5,6,7,8,9};
void razm(int k)
{
if (k==r)
cout<<a[0]<<"/"<<a[1]<<" + "<<a[2]<<"/"<<a[3]<<a[4]<<" = "<<a[5]<<a[6]<<"/"<<a[7]<<a[8]<<a[9]<<endl;
else for (int y=0;y<n;y++)
if (d[y]>0)
{
a[k]=y;
d[y]=d[y]-1;
razm(k+1);
d[y]=d[y]+1;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale (0,"rus");
// && a[1]!=0 && a[2]!=0 && a[3]!=0 && a[4]!=0 && a[6]!=0 && a[8]!=0
for(int i=0;i<r;i++)
d[i]=1;
do razm(1);
while (a[0]/a[1]+a[2]/(a[3]*10+a[4])==(a[5]*10+a[6])/(a[7]*100+a[8]*10+a[9]));
cin>>n;
return 0;
}