#33891: C 好好玩


a302854888@gmail.com (小麥)

學校 : 不指定學校
編號 : 190267
來源 : [203.204.115.46]
最後登入時間 :
2022-08-23 18:46:16
c123. 00514 - Rails -- UVa514 | From: [203.204.115.46] | 發表日期 : 2023-02-11 02:28

#include <stdio.h>
#include <stdlib.h>

int main() 
{
    while (1)
    {
        int n;
        scanf("%d", &n);
        if (n == 0)
        {
            break;
        }

        while (1)
        {
            int* arr;
            arr = (int*) malloc(n*sizeof(int));
            scanf("%d", arr);
            if (*arr == 0)
            {
                break;
            }
            for (int i = 1; i < n; i++)
            {
                scanf("%d", (arr + i));
            }

            int* stack;
            stack = (int*) malloc(n*sizeof(int));
            int tail = -1;
            int now = 0;
            for (int i = 1; i <= n; i++)
            {
                tail++;
                *(stack + tail) = i;
                while (tail >= 0 && *(arr + now) == *(stack + tail))
                {
                    tail--;
                    now++;
                }
            }

            if (tail == -1)
            {
                printf("Yes\n");
            }
            else
            {
                printf("No\n");
            }
        }
    }

    return 0;
}

 
#36562: Re: C 好好玩


goodlogic (GoodLogic)

學校 : 中原大學
編號 : 236459
來源 : [223.141.195.113]
最後登入時間 :
2024-04-22 12:53:24
c123. 00514 - Rails -- UVa514 | From: [114.42.134.238] | 發表日期 : 2023-07-23 23:00

#include
#include

int main() 
{
    while (1)
    {
        int n;
        scanf("%d", &n);
        if (n == 0)
        {
            break;
        }

        while (1)
        {
            int* arr;
            arr = (int*) malloc(n*sizeof(int));
            scanf("%d", arr);
            if (*arr == 0)
            {
                break;
            }
            for (int i = 1; i < n; i++)
            {
                scanf("%d", (arr + i));
            }

            int* stack;
            stack = (int*) malloc(n*sizeof(int));
            int tail = -1;
            int now = 0;
            for (int i = 1; i <= n; i++)
            {
                tail++;
                *(stack + tail) = i;
                while (tail >= 0 && *(arr + now) == *(stack + tail))
                {
                    tail--;
                    now++;
                }
            }

            if (tail == -1)
            {
                printf("Yes\n");
            }
            else
            {
                printf("No\n");
            }
        }
    }

    return 0;
}

請問這樣寫就是linklist

struct node{

    int num;

    node* next;

};

的簡化版嗎?

 
ZeroJudge Forum