2021-02-23PAT Grado A 1048 Encontrar monedas (25 puntos) (Punto de prueba 2)

No he probado el segundo punto de prueba de esta pregunta. Más tarde, encontré el problema del acceso al subíndice de matriz. Los amigos que encuentren el mismo problema pueden consultar lo siguiente: el
código original y el código modificado son los siguientes (el lugar modificado se comenta):

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
    int n,m;
    cin>>n>>m;
    int t;
    int a[10010]={
    
    0};
    for(int i=0;i<n;i++)
    {
    
    
        cin>>t;
        a[t]++;
    }
    int k=0;
    for(int i=1;i<=1005;i++)
    {
    
    
        if(a[i]>0&&i<m)//这里修改,增加了i<m的条件,因为循环的时候要注意数组下标的合法访问!!!接下去就可以AC了
        {
    
    
            if((m-i==i)&&(a[m-i]>1))
            {
    
    
                    printf("%d %d",i,m-i);
                    k=1;
                    break;
            }
            else if((a[m-i]>0)&&(m-i!=i))
            {
    
    
                 printf("%d %d",i,m-i);
                k=1;
                break;
            }
        }
    }
    if(k==0)
        printf("No Solution");
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/CSDN_Ysu/article/details/114001306
Recomendado
Clasificación