Cumartesi, Şubat 11, 2006

Permütasyon örneği

Takip ettiğim forumlardan birinde - mdkgroup.com - sorulan problemin çözümü için yazılmıştır
Permütasyon için örnek sayılabilir

Soru

Aşağıdaki iki soruda her harf 1'den 9'a kadar olan farklı bir sayıya karşılık gelmektedir.Eşitlikleri sağlayan değerleri bulunuz.

1) A / B x C + D / E x F + G / H x J = 1


2) A / BC + D / EF + G / HJ = 1

(BC EF HJ iki basamaklı sayılar(soruda yok ama bu gösterim iki basamaklı sayı gösterimi))

Cevap için yazdığım program
#include
#include

float czm[10]; // A 0 B 1 ...
float s1, s2;
int CozumDene();
int Cozum();
void CozumGoster();

int main()
{
int x=0;
x=Cozum();
if(x)
printf("%d Cozum Bulundu !",x);
else
puts("Cozum Yok!");

}


int CozumDene()
{
char buf[19];
s1=((czm[0]/(czm[1]*czm[2]))+(czm[3]/(czm[4]*czm[5]))+(czm[6]/(czm[7]*czm[8])));
s2=((czm[0]/(10*czm[1]+czm[2]))+(czm[3]/(10*czm[4]+czm[5]))+(czm[6]/(10*czm[7]+czm[8])));

if(s1==1.0 || s2==1.0) return 1;
else
return 0;

}

int Cozum()
{

int x=0;

for(int a=1;a<10;>
czm[0]=a;

for(int b=1;b<10;b++){
if(a==b) continue;
czm[1]=b;

for(int c=1;c<10;c++){
if(c==a) continue;
if(c==b) continue;
czm[2]=c;

for(int d=1;d<10;d++){
if(d==a) continue;
if(d==b) continue;
if(d==c) continue;
czm[3]=d;

for(int e=1;e<10;e++){
if(e==a) continue;
if(e==b) continue;
if(e==c) continue;
if(e==d) continue;
czm[4]=e;

for(int f=1;f<10;f++){
if(f==a) continue;
if(f==b) continue;
if(f==c) continue;
if(f==d) continue;
if(f==e) continue;
czm[5]=f;

for(int g=1;g<10;g++){
if(g==a) continue;
if(g==b) continue;
if(g==c) continue;
if(g==d) continue;
if(g==e) continue;
if(g==f) continue;
czm[6]=g;

for(int h=1;h<10;h++){
if(h==a) continue;
if(h==b) continue;
if(h==c) continue;
if(h==d) continue;
if(h==e) continue;
if(h==f) continue;
if(h==g) continue;
czm[7]=h;

for(int j=1;j<10;j++){
if(j==a) continue;
if(j==b) continue;
if(j==c) continue;
if(j==d) continue;
if(j==e) continue;
if(j==f) continue;
if(j==g) continue;
if(j==h) continue;
czm[8]=j;
if(CozumDene()){
x++;
CozumGoster();

}
}


}
}
}
}
}
}
}


}

return x;
}

void CozumGoster()
{

printf("A= %.0f B= %.0f C= %.0f D= %.0f E= %.0f F= %.0f G= %.0f H= %.0f J= %.0f s1=%.2f s2=%.2f\n", czm[0],czm[1],czm[2],czm[3],czm[4],czm[5],czm[6],czm[7],czm[8],s1,s2);

}

Hiç yorum yok: