zoukankan      html  css  js  c++  java
  • nyoj-93-汉诺塔(三)

    这是误打误撞弄出来的  相反思路   呵呵 贴上来给思路

     1  
     2 #include<stdio.h>
     3 #include<string.h>
     4 #include<algorithm>
     5 #include<math.h>
     6 using namespace std;
     7 struct zhan
     8 {
     9     int z[65],top;
    10 }z[3];
    11 int main()
    12 {
    13     bool move(int m,int n);
    14     int n,p,q,a,b,i;
    15     scanf("%d",&n);
    16     while(n--)
    17     {
    18         scanf("%d%d",&p,&q);
    19         for(i=0;i<=p;i++)
    20         z[0].z[i]=i;
    21         z[0].top=p;z[1].top=z[2].top=0;
    22         int flag=1;
    23         for(i=0;i<q;i++)
    24         {
    25             scanf("%d%d",&a,&b);
    26             if(flag)
    27             {
    28                 if(move(a-1,b-1)==0)
    29                 flag=0;
    30             }
    31         }
    32         printf(flag?"legal
    ":"illegal
    ");
    33     }
    34     return 0;
    35 }
    36 
    37 bool move(int m,int n)
    38 {
    39     //printf("%d %d %d %d %d %d
    ",m,n,z[m].top,z[n].top,z[m].z[z[m].top],z[n].z[z[n].top]);
    40     if(z[m].top!=0&&z[m].z[z[m].top]>z[n].z[z[n].top])
    41     {
    42         z[n].z[++z[n].top]=z[m].z[z[m].top--];
    43         return 1;
    44     }
    45     else
    46     return 0;
    47 }
    48         

    这是改过之后的模拟思路

     1  
     2 #include<stdio.h>
     3 #include<string.h>
     4 #include<algorithm>
     5 #include<math.h>
     6 using namespace std;
     7 struct zhan
     8 {
     9     int z[65],top;
    10 }z[3];
    11 int main()
    12 {
    13     bool move(int m,int n);
    14     int n,p,q,a,b,i;
    15     scanf("%d",&n);
    16     while(n--)
    17     {
    18         scanf("%d%d",&p,&q);
    19         for(i=0;i<=p;i++)
    20         z[0].z[i]=p-i+1;
    21         z[0].top=p;z[1].top=z[2].top=0;
    22         int flag=1;
    23         for(i=0;i<q;i++)
    24         {
    25             scanf("%d%d",&a,&b);
    26             if(flag)
    27             {
    28                 if(move(a-1,b-1)==0)
    29                 flag=0;
    30             }
    31         }
    32         printf(flag?"legal
    ":"illegal
    ");
    33     }
    34     return 0;
    35 }
    36 
    37 bool move(int m,int n)
    38 {
    39     //printf("%d %d %d %d %d %d
    ",m,n,z[m].top,z[n].top,z[m].z[z[m].top],z[n].z[z[n].top]);
    40     if(z[m].top==0||z[n].top!=0&&z[m].z[z[m].top]>z[n].z[z[n].top])
    41     return 0;
    42     else
    43     {
    44         z[n].z[++z[n].top]=z[m].z[z[m].top--];
    45         return 1;
    46     }
    47 }
    48         
  • 相关阅读:
    我受不了了,可能拿不到毕业证了
    [My B.S paper draft]我的本科答辩论文草稿
    Memory Dog for Autodesk Maya
    Silent Hill 5 Bug
    AMPAS/ASC Common File Format LUT
    CUDAAccelerated LUT Converter for DI Workflow
    Forking AfterBurn into Maya
    nicEdit上传图片无法显示的问题
    用插值的方法进行直方图平滑
    一个新的做presentation的利器
  • 原文地址:https://www.cnblogs.com/nylg-haozi/p/3198525.html
Copyright © 2011-2022 走看看