洛谷P1540 机器翻译

本题网站连接
这题是一道简单模拟运算的题,思路很好想,并不难但很容易一个点给坑到:数据输入可以为0!!!因为我习惯将数组a初始化为0,并用0来作为判断条件,所以某些情况会输出错误,所以wa了两次。
教训:遇到出入情况有0的情况慎重考虑是否要以0为判断条件和将数组初始化为0.(最后附上AC代码)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int a[1010];
int b[1010];
int main()
{
    memset(a,-1,sizeof(a));
    int m,n,cnt = 0,ind = 0,nums = 0;
    scanf("%d%d",&m,&n);
    for(int i = 0;i<n;i++)
    {
      scanf("%d",&b[i]);
      if(a[b[i]]==-1)
      {
         if(cnt<m){
           a[b[i]] = 1;
           cnt++;
           nums++;
         }
         else{
         while(b[ind]==-1){
         ind++;
         }
         a[b[ind]] = -1;
         a[b[i]] = 1;
         ind++;
         nums++;
         }
      }
      else
         b[i]=-1;
    }
    printf("%d",nums);
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容