1 条题解
-
0
C :
#include<stdio.h> #include<string.h> int main() { int m,n,a; //int data[1000]; int zd[100000]; memset(zd,-1, sizeof(zd)); int sum=0; scanf("%d %d",&m,&n); int m1=1; for(int i=0;i<n;i++) { int yy=1; scanf("%d",&a); if(m==0) continue; for(int j=1;j<=m;j++) { if(zd[j]==a) //判断输入的单词是否在内存中 { yy=0; } } if(yy==1) { sum++; int x=m1%m; if(x==0) //判断内存是否满了 { x=m; //符合条件从最早存的开始覆盖 } zd[x]=a; //赋值 m1++; } } if(m==0) printf("%d",n); else printf("%d",sum); return 0; }C++ :
#include <bits/stdc++.h> using namespace std; int main() { int m,n,a[1005],b[1005],flag,cnt=0; cin>>m>>n; for(int i=1;i<=n;i++)cin>>a[i]; int L=0,R=1; memset(b,-1,sizeof(b)); for(int i=1;i<=n;i++) { flag=1; for(int j=L;j<=R;j++) { if(b[j]==a[i]) { flag=0; break; } } if(flag) { cnt++; if(R-L>=m)L++; b[R++]=a[i]; } } cout<<cnt<<endl; return 0; }
- 1
信息
- ID
- 1022
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 0
- 上传者