#include <stdio.h>
unsigned long fib(int n)
{
if(n<2)
return 1UL
return fib(n-1)+fib(n-2)
}
int main()
{
unsigned long sum
int i
for(sum=0,i=0i<10++i)
sum+=fib(i)
printf("%lu\n",sum)
return 0
}
s = input('任意输入n个不重复的整数序列(如:12,13,15,1)\n','s')A = str2num(s)
m = length(A)
id = perms(1:m)
R = A(id)
任意输入n个不重复的整数序列(如:12,13,15,1)
5,12,1
R =
1 12 5
1 5 12
12 1 5
12 5 1
5 12 1
5 1 12
#include<stdio.h>
#include
<stdlib.h>
#define
LEN
sizeof(struct
node)
typedef
struct
node
{
int
num
struct
node
*next
}list
//链表结点结构体
void
main()
{
list
*create()
list
*turn(list
*)
list
*reform(list
*,list
*)
list
*head1,*head2,*head
head1=create()
head2=create()
head=reform(turn(head1),turn(head2))
while(head)
{
printf("%d
",head->num)
head=head->next
}
}
list
*create()
//建立链表的函数
{
list
*p,*q,*head
int
n=0
printf("请输入一个非降序列,以0结束\n")
p=(list
*)malloc(LEN)
scanf("%d",&p->num)
n++
while(p->num!=0)
//终止条件为输入0
{
if(1==n)
head=p
else
q->next=p
q=p
p=(list
*)malloc(LEN)
scanf("%d",&p->num)n++
}
free(p)
q->next=NULL
return
head
//返回头指针
}
/*void
sort(list
*head)
//排序函数
{list
*p,*q
int
temp
for(p=headp->next!=NULLp=p->next)
for(q=pq!=NULLq=q->next)
if(p->num<q->num)
{temp=p->nump->num=q->numq->num=temp}
//选择法对数据排序
}*/
list
*turn(list
*head)
//链表逆序
{
list
*p,*q,*t
p=head
q=p->next
if(q)
t=q->next
p->next=NULL
while(q)
{
q->next=p
p=q
q=t
if(t)
t=t->next
}
return
p
}
list
*reform(list
*head1,list
*head2)
//合并函数
{
list
*head,*p,*q,*p1,*p2
int
n=0
for(p1=head1,p2=head2p1!=NULL&&p2!=NULL)
{
p=(list
*)malloc(LEN)n++
if(1==n)
head=p
else
q->next=p
if(p1->num>=p2->num)
p->num=p1->num,p1=p1->next
else
p->num=p2->num,p2=p2->next
q=p
}
if(NULL==p1)
q->next=p2
else
q->next=p1
return
head
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)