NOIP2010 提高组 复赛 translate 机器翻译

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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值