其他分享
首页 > 其他分享> > 3.27

3.27

作者:互联网

 

 (1)

 1 #include<stdio.h>
 2 typedef struct{
 3     int vm,vn,vf;
 4     int tag;
 5 }item;
 6 typedef struct{
 7     item element[50];
 8     int top;
 9 }Stack;
10 void Init(Stack*S)
11 {
12     S->top=-1;
13 }
14 void Push(Stack*S,item x)
15 {
16     S->element[++S->top]=x;
17 }
18 item Pop(Stack*S)
19 {
20     item x;
21     x=S->element[S->top--];
22     return x;
23 }
24 int Ackerman(item e)
25 {
26     Stack T;
27     Init(&T);
28     Push(&T,e);
29     while(T.top!=-1)
30     {
31         if(T.element[T.top].tag)
32         {
33             if(T.element[T.top].vm==0)
34             {
35                 T.element[T.top].vf=T.element[T.top].vn+1;
36                 T.element[T.top].tag=0;
37             }
38             else if(T.element[T.top].vm!=0&&T.element[T.top].vn==0)
39             {
40                 e.vm=e.vm-1;
41                 e.vn=1;
42                 e.tag=1;
43                 Push(&T,e);
44             }
45             else if(T.element[T.top].vm!=0&&T.element[T.top].vn!=0)
46             {
47                 e.vn=e.vn-1;
48                 e.tag=1;
49                 Push(&T,e);
50             }
51         }
52         else if(!T.element[T.top].tag)
53         {
54             if(T.element[T.top-1].vm!=0&&T.element[T.top-1].vn==0)
55             {
56                 e=Pop(&T);
57                 T.element[T.top].vf=e.vf;
58                 T.element[T.top].tag=0;
59             }
60             else if(T.element[T.top-1].vm!=0&&T.element[T.top-1].vn!=0)
61             {
62                 e=Pop(&T);
63                 T.element[T.top].vm=T.element[T.top].vm-1;
64                 T.element[T.top].vn=e.vf;
65             }
66         }
67         if(T.top==0&&!T.element[T.top].tag)break;
68     }
69     return T.element[T.top].vf;
70 }
71 int main()
72 {
73     item e;
74     scanf("%d %d",&e.vm,&e.vn);
75     e.tag=1;
76     printf("%d",Ackerman(e));
77     return 0;
78 }

(2)

 1 #include<stdio.h>
 2 int Ackerman(int m,int n)
 3 {
 4     if(!m)return n+1;
 5     else if(m&&!n)return Ackerman(m-1,1);
 6     else if(m&&n)return Ackerman(m-1,Ackerman(m,n-1));
 7 }
 8 int main()
 9 {
10     int m,n;
11     scanf("%d %d",&m,&n);
12     printf("%d",Ackerman(m,n));
13     return 0;
14 }

 

标签:int,top,vm,vn,element,tag,3.27
来源: https://www.cnblogs.com/JT3895/p/15659641.html