您的位置:首页 > 其它

NOIP2010 提高组 复赛 translate 机器翻译

2017-01-01 15:39 274 查看

NOIP2010 提高组 复赛 translate 机器翻译

1.读题,很快弄明题意,单词不在内存中就查字典,统计查字典次数。

2.内存采用队列方式。统计进队列次数,即为查询次数。

3.程序很快编好,两个样例通过,提交20分,重新读题,发现误解题意,清空的不是第一个内存块内容,而是第一个单词内容,修改,两个样例通过,提交20分,发现,反复读题,发现内存容量用的是样例1中的3,马上修改成m,提交AC.

4.心里素质还好,此题读下来,肯定能拿100分的,所以要反复尝试,绝不能跳过,做下一道。

5.有一点要注意,队列要开1000+10。

耗时:35分钟(从拿到题目开始,其中经历两次20分,第三次AC)

附上AC代码,编译环境Dev-C++4.9.9.2

//2010 translate

#include <stdio.h>

int queue[1000+10];//队列

int main(){

    int head,tail,cur;

    int m,n,v,count;

    int i;

    scanf("%d%d",&m,&n);

    head=0;

    tail=0;

    count=0;

    for(i=0;i<n;i++){

        scanf("%d",&v);

        cur=head;//遍历队列

        while(cur!=tail){

            if(queue[cur]==v)

                break;

            cur++;

        }

        if(cur==tail){//队列中没找到

            //队列容量未到m

            if(tail-head<m){

                queue[tail]=v;

                tail++;

            }else{//队列容量已是m

                queue[tail]=v;

                tail++;

                head++;

            }

            count++;

        }else{//队列中找到

             //无需查字典,故不进行操作

        }

    }

    printf("%d\n",count);

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: