90分,点2wa,求助

回复帖子 返回题目

@ legends丶killer 2017-08-13 17:15
#include<iostream>
#include<string>
using namespace std;    
int main()
{
    int dic[1005] = {-1};
    int length , mem , time = 1 , able = 0;
    int pas[1000];
    cin >> mem >> length;
    for(int i = 0 ; i < length ; i ++)
    {
        cin >> pas[i];
    }
    for(int i = 0 ; i < length ; i ++)
    {
        if(i == 0) dic[0] = pas[i];
        else
        {
            for(int j = 0 ; j < mem ; j ++)
            {
                if(dic[j] == pas[i]) able = 1;
            }
            if(able == 0)  //添加字典
            {
                time ++;
                for(int k = mem - 1 ; k >= 0 ; k --)
                {
                    dic[k + 1] = dic[k];
                }
                dic[0] = pas[i];
            }
            able = 0;
        }
    }
    cout << time;
}
@ 张裕 2017-08-15 09:35 回复

有单词0,我是这么做的,在每个数输进来的时候+1。

如果到比赛了不知道数据会这样会抓狂的(手动滑稽)

@ strike 2017-08-16 20:45 回复

最好在程序里考虑到0的问题,比如初始值设为-1

@ 最爱辣子鸡 2017-08-18 22:52 回复
#include<cstdio>
using namespace std;//开始游戏,begin!; 
int p,s,t,i,n,m,a[10005],b[1005];
int main()
{
    scanf("%d%d",&m,&n);//输入不解释; 
    for(int j=0;j<m;j++)
      b[j]=-1;//用来查一次0,如果为0也加,可以过第二个点; 
    for(i=0;i<n;i++)
      scanf("%d",&a[i]);//输入,不解释; 
    for(i=0;i<n;i++)//这么多个数,一个一个来; 
      {
          s=1;//立个flag,升上去; 
          if(p==m)p=0;//如果满足容量,从头来找; 
          for(int j=0;j<m;j++)//在容量范围内查找; 
        if(a[i]==b[j])
              s=0;//如果找到等于的数,flag就降下来; 
        if(s!=0)//如果没有降下来 flag; 
          {
              t++;//查找次数加加; 
              b[p]=a[i];
              p+=1;
          }
      }
    printf("%d",t);//输出结果gg,lol,游戏结束; 
}