#3849: 這樣寫有邏輯上的問題還是太慢嗎?一直TLE...


no306100 (JamesQAQ)

學校 : 國立彰化高級中學
編號 : 9600
來源 : [61.224.72.249]
最後登入時間 :
2024-03-31 19:39:39
d517. 文字抄寫 I | From: [123.195.112.221] | 發表日期 : 2010-06-10 21:37

#include <iostream>
#include <stdio.h>
using namespace std;

int k,c=0;
char a[100000][4],temp[4],s;
int match(int o);
int main()
{
    while (scanf("%d",&k)==1)
    {
        s=getchar();
        if (s==EOF)
            return 0;
        int at=0;
        for (int i=0;i<k;i++)
        {
            temp[0]=getchar();
            temp[1]=getchar();
            temp[2]=getchar();
            temp[3]=getchar();
            s=getchar();
            if (at==0)
            {
                a[0][0]=temp[0];
                a[0][1]=temp[1];
                a[0][2]=temp[2];
                a[0][3]=temp[3];
                at++;
                printf("New! 1\n");
            }
            else
            {
                for (int o=0;o<at;o++)
                {
                    if (match(o))
                    {
                        printf("Old! %d\n",o+1);
                        c=1;
                    }
                }
                if (c==0)
                {
                    a[at][0]=temp[0];
                    a[at][1]=temp[1];
                    a[at][2]=temp[2];
                    a[at][3]=temp[3];
                    printf("New! %d\n",at+1);
                    at++;
                }
                else
                    c=0;
            }
        }
    }
    //system("pause");
    return 0;
}

int match(int o)
{
    for (int y=0;y<4;y++)
    {
        if (a[o][y]!=temp[y])
            return 0;
    }
    return 1;
}

 

本來讀取會造成WA line:6

改好之後一直試都TLE.....

 
#3850: Re:這樣寫有邏輯上的問題還是太慢嗎?一直TLE...


linishan (L)

學校 : 國立交通大學
編號 : 1090
來源 : [104.132.150.102]
最後登入時間 :
2019-05-10 19:57:54
d517. 文字抄寫 I | From: [125.228.108.204] | 發表日期 : 2010-06-12 09:19

#include
#include
using namespace std;

int k,c=0;
char a[100000][4],temp[4],s;
int match(int o);
int main()
{
    while (scanf("%d",&k)==1)
    {
        s=getchar();
        if (s==EOF)
            return 0;
        int at=0;
        for (int i=0;i
        {
            temp[0]=getchar();
            temp[1]=getchar();
            temp[2]=getchar();
            temp[3]=getchar();
            s=getchar();
            if (at==0)
            {
                a[0][0]=temp[0];
                a[0][1]=temp[1];
                a[0][2]=temp[2];
                a[0][3]=temp[3];
                at++;
                printf("New! 1\n");
            }
            else
            {
                for (int o=0;o
                {
                    if (match(o))
                    {
                        printf("Old! %d\n",o+1);
                        c=1;
                    }
                }
                if (c==0)
                {
                    a[at][0]=temp[0];
                    a[at][1]=temp[1];
                    a[at][2]=temp[2];
                    a[at][3]=temp[3];
                    printf("New! %d\n",at+1);
                    at++;
                }
                else
                    c=0;
            }
        }
    }
    //system("pause");
    return 0;
}

int match(int o)
{
    for (int y=0;y<4;y++)
    {
        if (a[o][y]!=temp[y])
            return 0;
    }
    return 1;
}

 

本來讀取會造成WA line:6

改好之後一直試都TLE.....

循序搜尋一定TLE ..
 
ZeroJudge Forum