算法—回溯法桥本分数式
生活随笔
收集整理的這篇文章主要介紹了
算法—回溯法桥本分数式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/* 將1-9九個(gè)數(shù)不重復(fù)地賦給不同的9個(gè)元素 ,實(shí)現(xiàn)形如a/bc+d/ef=f/hi 的形式:例:1/26+5/78=4/39 1/32+5/96=7/84 (注意:1/26+5/78=4/39 和5/78+1/26=4/39 只能算一種解)求滿足條件的解共有多少個(gè)?
*/
#include "stdio.h"
void main()
{int i,k,g,s;int m1,m2,m3,a[10];a[1]=1;i=1;g=1;s=0;while(1){g=1;for(k=i-1;k>0;k--) //注意此處很容易由于習(xí)慣錯(cuò)寫成 for(k=i-1;i>0;i--)if(a[k]==a[i]) {g=0; break;} //兩數(shù)相同,標(biāo)記g=0if(i==9 && g==1 && a[1]<a[4]){ //為了避免解的重復(fù)所以a[1]<a[4]m1=a[2]*10+a[3];m2=a[5]*10+a[6];m3=a[8]*10+a[9]; if(a[1]*m2*m3+a[4]*m1*m3==a[7]*m1*m2){s++;printf("%d/%d+%d/%d=%d/%d \t",a[1],m1,a[4],m2,a[7],m3);if(s%2==0) printf("\n");} } if(i<9 &&g==1){i++; a[i]=1; continue;} //向前繼續(xù)走,執(zhí)行continue語句直接跳到while語句,則不在執(zhí)行下面的語句 while(a[i]==9 && i>1) i--; //向上一步回溯 if(a[i]==9 && i==1) break; //注意此處不能簡(jiǎn)寫成 if(a[1]==9)else a[i]++; }printf("共有%d個(gè)解!",s);
}
總結(jié)
以上是生活随笔為你收集整理的算法—回溯法桥本分数式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 颐和园狗拉雪橇多少钱
- 下一篇: java警惕自增的陷阱