NYOJ - 汉诺塔(三) 落日映苍穹つ 2022-08-25 05:28 19阅读 0赞 [93 汉诺塔(三)][93] 定义一个栈一维数组,包含3个栈,代表3个柱子,依次执行指令 第一次提交时,注释什么多余的语句没删除,每个栈开的长度大了,提交结果 内存 972 然后将神马多余的都删除,栈长度改的正合适,提交结果 内存 308 \[code\] \#define TRUE 1 \#define FALSE 0 \#define STACK\_INIT\_SIZE 66 \#include "iostream" \#include "cstdlib" \#include "cstdio" \#include "cstring" using namespace std; typedef int Status; //Status 相当于 int typedef int ElemType; typedef struct Stack \{ ElemType \* base, \* top; \}SqStack; void InitStack(SqStack &S) //创建一个空栈 \{ S.base = (ElemType \*)malloc(sizeof(ElemType) \* STACK\_INIT\_SIZE); S.top = S.base; \} Status StackEmpty(SqStack S)//判断是否为空 \{ if(S.top == S.base) return TRUE; else return FALSE; \} void Push(SqStack &S,ElemType e )//插入元素e为新的栈顶元素 \{ \* S.top++ = e; \} void Pop(SqStack &S,ElemType &e)//出栈 \{ e = \* --S.top; \} ElemType GetTop(SqStack S) \{ return \*(S.top-1); \} int main() \{ int n; scanf("%d",&n); while(n--)\{ int p,q; scanf("%d%d",&p,&q); SqStack S\[3\];//定义3个栈,代表3个柱子 InitStack(S\[0\]); InitStack(S\[1\]); InitStack(S\[2\]); for(int i=p; i>=1; i--) Push(S\[0\],i);//第一步,初始化1柱上的金片 int flag = 1; int a,b,e; for(int i=0; i<q; i++)//Q条指令 \{ scanf("%d%d",&a,&b);//从a柱到b柱 if(StackEmpty(S\[a-1\])) \{ flag = 0; break;\} else Pop(S\[a-1\],e); if(!StackEmpty(S\[b-1\]) && e>GetTop(S\[b-1\])) \{ flag = 0; break;\} else Push(S\[b-1\],e); \} if(flag) printf("legal\\n"); else printf("illegal\\n"); \} return 0; \} \[\\code\] [93]: http://acm.nyist.net/JudgeOnline/problem.php?pid=93
相关 汉诺塔 汉诺塔 1.目标 2.思路(算法 ) 3.实现 4.总结(如何理解这个算法) 注意: 1.目标 目标很明确就是将下图中A柱子上 淡淡的烟草味﹌/ 2022年11月02日 13:14/ 0 赞/ 67 阅读
相关 汉诺塔 package com.someusefuldesign.demo; /假设有A B C三个柱子移动的顺序为: / public class 妖狐艹你老母/ 2022年08月13日 15:54/ 0 赞/ 233 阅读
相关 汉诺塔 Problem Description 汉诺塔(又称河内塔)问题是印度的一个古老的传说。 开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒A、B和C,A上面套着 Dear 丶/ 2022年06月17日 05:28/ 0 赞/ 309 阅读
相关 汉诺塔 汉诺塔 Time Limit: 1000MS Memory Limit: 65536KB [Submit][] [Statistic][] Prob 约定不等于承诺〃/ 2022年06月11日 03:24/ 0 赞/ 262 阅读
相关 汉诺塔 \include<stdio.h> void hanoi(int n,char A,char B,char C) \{ if(n==1) printf("Move s 逃离我推掉我的手/ 2022年06月10日 12:57/ 0 赞/ 308 阅读
相关 汉诺塔 include <stdio.h> void hannuota(int n,char A,char B,char C){ if(1 == n){ 川长思鸟来/ 2022年06月07日 13:06/ 0 赞/ 228 阅读
相关 汉诺塔 汉诺塔 Time Limit: 1000 ms Memory Limit: 65536 KiB [Submit][] [Statistic][] Problem D 怼烎@/ 2022年05月29日 05:58/ 0 赞/ 271 阅读
相关 汉诺塔 def move(n, a, b, c): if n == 1: \ 如果a只有1盘子 print(a, '-->', c); \ 直接把盘子从a移到c els 迷南。/ 2022年05月18日 22:25/ 0 赞/ 339 阅读
相关 汉诺塔 include <iostream> using namespace std; int main() { void hanno(int 冷不防/ 2021年09月29日 12:14/ 0 赞/ 469 阅读
还没有评论,来说两句吧...