问题标题: 酷町堂:1382 记事本

0
0
张元宝
张元宝
修练者
修练者

小王有一个好习惯,那是就是每天坚持背单词,小王的记性不太好,但是小王有自己的方法。 他随身会携带一个记事本,将单词记到本子里面,但是有一个问题,记事本只有M页,并且每页只能记录一个单词。 当他碰到一个单词,他就会去记事本里查询单词的翻译,如果记事本里没有记录这个单词的话,小王就需要查字典了,然后再将单词记录到记事本里,以备后续的查找。 如果记事本里有这个单词,那小王就可以立马知道单词的意思啦。

假设记事本中有M页,每页只能记录一个单词。每当小王将一个新单词(记事本里没有记录的单词)记录到单词本前,如果当前记事本中已经记录的单词数不超过M,小王就会将新单词存入一个未使用的页里;若记事本中已记录M个单词,小王只能清空最早记录的那个单词,腾出这一页用来记录新单词。

一天小王阅读一篇文章,文章的长度为N个单词,请问小王总共需要查多少次字典?假设在阅读开始前,小王的记事本里中没有记录任何单词。

求思路。


0
0
0
0
0
0
0
王俊杰
王俊杰
高级光能
高级光能

输入,输出不说了

核心代码:

  • 循环(int 从1开始,到n结束,每次加加)//用i
  • {
  • 整形 temp,flag=0;//flag是判断是真是假
  • 输入>>temp;
  • 循环(int 从h开始,到t结束,每次加加)//用j
  • {
  • 判断(temp等于等于a[j])
  • {
  • flag=1;
  • 打断循环;
  • }
  • }
  • 判断(flag等于等于0)
  • {
  • count加加;
  • a[t]等于temp;
  • t加加;
  • 判断(t减h大于m)
  • h加加;
  • }
  • }
  • 望采纳
0
张天璨
张天璨
新手天翼
新手天翼
h=1,t=1;
    for(int i=1;i<=n;i++)
    {
        int temp,flag=0;
        cin>>temp;
        for(int j=h;j<=t;j++)
        {
            if(temp==a[j])
            {
                flag=1;
                break;
            }
        }
        if(flag==0)
        {
            count++;
            a[t]=temp;
            t++;
            if(t-h>m)
                h++;
        }
    }
    cout<<count;

 

0
0
王文博
王文博
缔造者之神
缔造者之神

有一件事情让我十分困惑

0
0
王文博
王文博
缔造者之神
缔造者之神

为什么你回答了那么多问题,才到修炼者???

0
0
王子健
王子健
初级天翼
初级天翼
思路:

1.定义。

2.for循环。

3.for循环中定义两个变量。

4.if判断。

5.if判断。

6.输出。

总的来讲就是for套if套if。

望采纳!!!

谢谢!!!

核心:

    for(int i=1;i<=n;i++)
    {
        int temp,flag=0;
        cin>>temp;
        for(int j=h;j<=t;j++)
        {
            if(temp==a[j])
            {
                flag=1;
                break;
            }
        }
        if(flag==0)
        {
            count++;
            a[t]=temp;
            t++;
            if(t-h>m)
                h++;
        }
    }

定义,输入,输出自己加。

输出:cout<<count;

望采纳!!!

 

我要回答