问题标题: 1382 记事本

0
0
已解决
朱宗晔
朱宗晔
初级光能
初级光能

#include <iostream>
using namespace std;

int last[1010],n,m,ym,ans;
int main(){
    cin >> m >> n;
    for(int i = 1,a;i <= n;i ++){
        cin >> a;
        bool flag = false;
        for(int j = 1;j <= ym;j ++){
            if(last[j] == a){
                flag = true;
                break;
            }
        }
        if(!flag){
            if(ym == m){
                last[1] = a;
                ans ++;
            }
            else {
                last[++ym] = a;
                ans ++;
            }
        }
    }
    cout << ans << endl;
}

代码一

#include<iostream>
using namespace std;
int a[10100],tot[10100],n,m,Max=-1,Min=1100,ans=0,ys=0;
int cmp(int max,int a)
{
    for(int i=1;i<=max;i++){
        if(tot[i]==a) return 0;
    }
    return 1;
}
int main()
{
    cin>>m>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(Max<a[i]) Max=a[i];
        if(Min>a[i]) Min=a[i];
        tot[i]=1010;
    }
    for(int i=1;i<=n;i++){
        if(ys<m){
            if(cmp(Max,a[i])){
                ans++;
                ys++;
                tot[a[i]]=a[i];
            }
        }
        if(cmp(Max,a[i])&&ys>=m){
            tot[Min]=1010;
            tot[a[i]]=a[i];
            if(a[i]<Min) Min=a[i];
            ans++;
            ys--;
            ys++;
        }
    }
    cout<<ans<<endl;
}

代码二

两个都是85分,而且都是测试点7错了

求问题出在哪???


2
已采纳
张睿杰
张睿杰
初级天翼
初级天翼

这道题可以用函数

以下是核心和函数

核心

在一开始还要把两个数组都赋为-1,最后输出j

for(int i=0;i<=n-1;i++) cin>>dc[i];
    for(int i=0;i<=n-1;i++)
    {
        f=s(dc[i],m);
        if(f==0)
        {
            jsb[k%m]=dc[i];
            k++;
            j++;
        }
    }

函数

int s(int ddz,int m)
{
    for(int i=0;i<=m-1;i++)
    {
        if(ddz==jsb[i]) return 1;
//      else return 0;
        }
    return 0;
}

就这么简单,别忘了定义函数

0
0
王子凡
王子凡
高级光能
高级光能

for (i=1;i<=n;i++)
    {
        flag=0;
        for (j=1;j<=m;j++)//如果笔记里已经有该字符flag=1
            if (a[i]==b[j]) flag=1;
        if (flag==0)
        {

            s++;//需查字典的次数+1
            if (k<m)
                b[++k]=a[i];//记录该字符
            else
                b[++k2]=a[i];//清空原来的,记录新的字符
            if (k2==m) //再次从第1页开始替代旧的字符
                k2=0;
        }
    }

 

核心代码

0
0
-2
我要回答