• 迷宫 maze


     1 #include <stdlib.h>
     2 #include <stdio.h>
     3 
     4 #define stackinitsize 50
     5 #define stackincrement 8
     6 
     7 typedef struct {
     8     int x,y;
     9 }posttype;
    10 
    11 typedef struct {
    12     int ord;
    13     posttype seat;
    14     int di;
    15 }elemtype;
    16 
    17 typedef struct{
    18   elemtype *base;
    19   elemtype *top;
    20   int stacksize;
    21 }sqstack;
    22 
    23 
    24 int  initstack(sqstack &s)
    25   {s.base=(elemtype * ) malloc(stackinitsize*sizeof(elemtype));
    26    s.top=s.base;
    27    s.stacksize=stackinitsize;
    28    return 1;
    29    }
    30 
    31 int push(sqstack &s,elemtype e)
    32  {
    33    (*(s.top)).ord=e.ord;
    34    (*(s.top)).seat.x=e.seat.x;
    35    (*(s.top)).seat.y=e.seat.y;
    36    (*(s.top)).di=e.di;
    37    s.top++;
    38    return 1;
    39  }
    40 
    41 //elemtype gettop(sqstack s)
    42 //{
    43 //  return *(s.top-1);
    44 // }
    45 
    46 int emptystack(sqstack s)
    47   {if (s.top==s.base)  return 1;
    48    else return 0;
    49    }
    50 
    51 int pop(sqstack &s,elemtype &e)
    52    { if (emptystack(s)) return 0;
    53      --s.top;
    54    e.ord=(*(s.top)).ord;
    55    e.seat.x=(*(s.top)).seat.x;
    56    e.seat.y=(*(s.top)).seat.y;
    57    e.di=(*(s.top)).di;
    58     return 1;
    59      }


    #include <stdio.h> # include "d:mazemystack.h" #define TRUE 1 #define FALSE 0 int a[10][10]={1,1,1,1,1,1,1,1,1,1, 1,0,0,1,0,0,0,1,0,1,
     1,0,0,1,0,0,0,1,0,1,
    1,0,0,0,0,1,1,0,0,1,
    1,0,1,1,1,0,0,0,0,1,
    1,0,0,0,1,0,0,0,0,1,
    1,0,1,0,0,0,1,0,0,1,
    1,0,1,1,1,0,1,1,0,1,
    1,1,0,0,0,0,0,0,0,1,
    1,1,1,1,1,1,1,1,1,1};



    typedef int Status; Status pass(posttype curpos) { if (a[curpos.x][curpos.y]==0) return 1; else return 0; } Status mazepath(int maze[10][10],posttype start,posttype end,sqstack &s) { int curstep; posttype curpos; elemtype e; initstack(s); curpos.x=start.x;curpos.y=start.y; curstep=1; do{ if(pass(curpos)) { // footprint(curpos);//stroe foot e.ord=curstep; e.seat.x=curpos.x; e.seat.y=curpos.y; e.di=1; push(s,e); if(curpos.x==end.x && curpos.y==end.y) return(TRUE); curpos.y=curpos.y+1;//east near curstep++; } else { if(!emptystack(s)) { pop(s,e); while(e.di==4 && !emptystack(s)) { // markprint(s.seat);//outprint reverse pop(s,e); }//end while if(e.di<4) { e.di++;push(s,e); switch(e.di) { case 1:curpos.y=curpos.y+1;break; case 2:curpos.x=curpos.x+1;break; case 3:curpos.y=curpos.y-1;break; case 4:curpos.x=curpos.x-1;break; } }//if(di<4) }//if(!emptystack(s)) }//else }while(!emptystack(s)); return FALSE; } void outputstak(sqstack s) { elemtype e; while(!emptystack(s)) { pop(s,e); printf("%d (%d,%d) %d ",e.ord,e.seat.x,e.seat.y,e.di); } } main() { posttype start,end; start.x=1;start.y=1; end.x=8;end.y=8; sqstack s1; if(mazepath(a,start,end,s1)==TRUE) outputstak(s1); else printf(" no path...."); }

      

  • 相关阅读:
    The Problem Came Up when we upgrade from KingDee K3 to SAP R3(FI module)
    小代码 OpenFileDialog() Windows下Upload & rewrite 文件
    [Note]CodeSmith 4.0 Lesson One
    正则表达式 运算 常见
    SAP function overview & instruction
    CodeSmith NetTier 保存主从表实例,当然,至于3级关联的问题还是类似做法,依靠Relationship做级联更新
    CodeSmith NetTier模板生成的代码框架用法 (转)
    [Notes] Demo The practice about how to using SAP XI components to build up the mapping bridge cross the application layer
    6260/7610/6670/3230 蓝牙 共享PC 宽带 无须代理
    [ALE in SAP]BAPI Introduction
  • 原文地址:https://www.cnblogs.com/wc1903036673/p/3395113.html
Copyright © 2020-2023  润新知