这个题和网上一大牛学了一个很牛的方法。
自己原来的算法就是把所有的都枚举出来然后排序。
大牛的算法很简练。
1
/**//*
2
ID: bnugong1
3
PROG: frac1
4
LANG: C++
5
*/
6
#include<stdio.h>
7
int n;
8
void di(int a,int b,int c,int d)
9

{
10
if(b+d>n)return;
11
di(a,b,a+c,b+d);
12
printf("%d/%d\n",a+c,b+d);
13
di(a+c,b+d,c,d);
14
}
15
int main()
16

{
17
freopen("frac1.in","r",stdin);
18
freopen("frac1.out","w",stdout);
19
scanf("%d",&n);
20
printf("0/1\n");
21
di(0,1,1,1);
22
printf("1/1\n");
23
return 0;
24
}
25