1 条题解

  • 0
    @ 2025-4-7 21:38:01

    C++ :

    #include<iostream>
    #include<cstdlib>
    #include<cstdio>
    using namespace std;
    int m,n;
    int a[1005],b[1005],step=0,f=0,j=1;
    bool find(int k,int hh)
    {
        for(int i=1;i<=hh;++i)
          if(b[i]==k)
            return true;
        return false;
    }
    int main()
    {   //freopen("translate.in","r",stdin);
        //freopen("translate.ans","w",stdout);
        cin>>m>>n;
        for(int i=1;i<=n;++i)
          cin>>a[i];
        b[j]=a[1];
        ++step;
        ++f;
        for(int i=2;i<=n;++i)
        {
            
           if(!find(a[i],f))
            {
                ++step;
                f++;//内存
                j++;
                if(f>m)
                  {     for(int o=1;o<=m-1;++o)
                            b[o]=b[o+1];
                        b[m]=a[i];
                        --j;
                        --f;
                        continue;
                  }
                b[j]=a[i];
            }
        }
        cout<<step;
        //system("pause");
        return 0;
    }
    

    Pascal :

    program t6;
    
    var ans,j,tip,m,n,i:longint;
       zd,a:array[0..10000] of longint;
    function find(p:longint):boolean;
    var i:longint;
    begin
    for i:=1 to n do
     if zd[i]=p then exit(true);
     exit(false);
    end;
    
    procedure work;
    var i:longint;
    begin
     for i:=1 to n+1 do
      if zd[i]=-1 then
       begin
       tip:=i;
       exit;
       end;
    end;
    
    begin
    readln(m,n);
    for i:=1 to m+1 do
     zd[i]:=-1;
    for i:=1 to n do
    begin
     read(a[i]);
     if not find(a[i]) then
      begin
      work;
      if tip<=m then zd[tip]:=a[i]
       else begin
        for j:=1 to n-1 do
        zd[j]:=zd[j+1];
        zd[n]:=a[i];
        end;
      inc(ans);
      end;
    end;
    writeln(ans);
    end.
    
    
    
    • 1

    信息

    ID
    1803
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者