这题我的方法就是下面这个,不然的话就要爆搜,这个规律不知道平时用的上不,但现在这会儿挺好用:
0/1 1/1 1/2 1/3 2/3 1/4 2/5 3/5 3/4 1/5 2/7 3/8 3/7 4/7 5/8 5/7 4/5
利用这个规律可以非常快的解决,不过至于为什么你们自己想去吧(我也没想通,反正能用的规律就OK了,AC就是王道。) 代码晚一点发上来,在Linux那台电脑里。
2010 年 12 月 28 日 12:14:36
我的那个Fedora坏了,又忘记备份/home了,又全部更新了硬盘的文件系统,代码就被。。。就用标称算了,反正是一样的。
#include #include #include #include int n; FILE fout; / print the fractions of denominator n) / cut off recursion / return; genfrac(n1,d1, n1+n2,d1+d2); fprintf(fout, "%d/%d\n", n1+n2, d1+d2); genfrac(n1+n2,d1+d2, n2,d2); } void main(void) { FILE *fin; fin = fopen("frac1.in", "r"); fout = fopen("frac1.out", "w"); assert(fin != NULL && fout != NULL); fscanf(fin, "%d", &n); fprintf(fout, "0/1\n"); genfrac(0,1, 1,1); fprintf(fout, "1/1\n"); }