1.对整数部分从1~n-1进行搜索,用flag记录已经出现过的数字(!式子中不能出现0,出现给flag标记中的0赋值为1); 2.分数部分,分母一定小于分子,分母长度一定小于等于分子,即分子长度一定小于等于右边总长度的一半 #include <iostream> #include <cstring> using namespace std; #define MAX 10 bool flag[MAX],copyf[MAX]; int n,sum,r,len; bool check(int n) { int m; while(n){ m=n%10; if (flag[m]) return false; flag[m]=true; n/=10; len++; } return true; } bool Ans(int num,int molecule) { for (int i=1;i<MAX;i++){ copyf[i]=flag[i]; } int s=0,m; while (molecule) { m=molecule%10; if (copyf[m]) return false; copyf[m]=true; s++; molecule/=10; } if (len-num==s){ return true; } return false; } void dfs(int num,int denominator) { if (num<=len/2) {