数据结构实验之链表八:Farey序列

来源:互联网 发布:电商视觉人工智能 编辑:程序博客网 时间:2024/04/29 07:01

数据结构实验之链表八:Farey序列

Time Limit: 10MS Memory limit: 600K

题目描述

Farey序列是一个这样的序列:其第一级序列定义为(0/1,1/1),这一序列扩展到第二级形成序列(0/1,1/2,1/1),扩展到第三极形成序列(0/1,1/3,1/2,2/3,1/1),扩展到第四级则形成序列(0/1,1/4,1/3,1/2,2/3,3/4,1/1)。以后在每一级n,如果上一级的任何两个相邻分数a/c与b/d满足(c+d)<=n,就将一个新的分数(a+b)/(c+d)插入在两个分数之间。对于给定的n值,依次输出其第n级序列所包含的每一个分数。

输入

输入一个整数n(0

输出

依次输出第n级序列所包含的每一个分数,每行输出10个分数,同一行的两个相邻分数间隔一个制表符的距离。

示例输入

6

示例输出

0/1   1/6   1/5   1/4   1/3   2/5   1/2   3/5   2/3   3/44/5   5/6   1/1

提示



#include<bits/stdc++.h>using namespace std;struct node{    int a,b;    node *next;};void creat(node *head,int n){    node *t,*p,*q;    t=head->next;    while (t->next!=NULL)    {        p=t->next;        if (t->b+p->b<=n)        {            q=new node;            q->a=p->a+t->a;            q->b=p->b+t->b;            t->next=q;            q->next=p;        }        t=t->next;    }}void show(node *head){    node *t;    t=head->next;    int k=0;    while (t!=NULL)    {        k++;        if (k%10==0)        printf("%d/%d\n",t->a,t->b);        else        printf("%d/%d\t",t->a,t->b);        t=t->next;    }}int main(){    int n;    scanf("%d",&n);    node *head,*p,*q;    head=new node;    head->next=NULL;    p=new node;    q=new node;    p->a=0;    p->b=1;    q->a=1;    q->b=1;    head->next=p;    p->next=q;    q->next=NULL;    for (int i=2;i<=n;i++)    {        creat(head,i);    }    show(head);    return 0;}


 
0 0
原创粉丝点击