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
