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