求大佬指点,真的不知道该怎么改了

P3955 [NOIP2017 普及组] 图书管理员

沧海梦 @ 2018-05-02 11:50:18

#include <stdio.h>
#include <string.h>
#include <math.h>
int m[1001],n[1001],o[20],l[1001];
int main()
{
    m[1001]=-1;
    memset(l,0,sizeof(l));
    int a,b,c,d,s=0,count=0,h=0,k=0;
    scanf("%d %d",&a,&b);
    for(int i=0;i<=a-1;i++)
    scanf("%d",&m[i]);
    for(;scanf("%d %d",&c,&d)<=2*b,b!=0;b--)
    {

        memset(n,-1,sizeof(n));
        s=0;
        for(int i=0;i<=a-1;i++)
        {
        h=(pow(10,c));
        h=m[i]%h;
        if(h==d)
        {
            n[s]=m[i];
            o[s]=i;
            s++;
            //count++;

        }
        }
        if(n[0]!=-1)
        {
            for(int i=0;i<=a-1;i++)
            if(n[0]>n[i]&&n[i]!=-1)
            {
                n[0]=n[i];
                o[0]=o[i];
            }
            //printf("%d\n",n[0]);
            l[k++]=n[0];
            m[o[0]]=0;
        }
        else
        //printf("-1\n");
        l[k++]=-1;
        if(b==1) break;
    }
    for(int i=0;l[i]!=0;i++)
    printf("%d\n",l[i]);

    return 0; 
 }

by Parabola @ 2018-05-02 13:10:41

m[1001]=-1很皮啊

删掉那句试试


by VenusM1nT @ 2018-05-02 13:17:15

m[1001]怕不是会RE


by x义x @ 2018-05-02 14:56:46

int m[1001],n[1001],o[20],l[1001];
int main()
{
    m[1001]=-1;

int m[2001]的下标是从0到2000,m[2001]实际上是没有的,给m[2001]赋值肯定会越界。


by 沧海梦 @ 2018-05-02 16:42:50

谢谢大佬们的帮助 ,当时还没写出程序思维比较混乱的时候码上去的那行,结果后来忘删了... 我终于发现问题了----我以为查完一次需求码,这个码就没有了,所以我就清零了 最后再次感谢大佬们的帮助


by 请叫我帅哥jbl @ 2018-07-09 21:17:17

emmmm


|