使用较为原始的方法,通过直接创建数组后逐个输入数据,再对其进行遍历可以得到最终结果。内存占用较高,不太适合实际使用情况。

int main(void) 
{
    int N=0, M=0, K=0;
    int i, j, num, a = 0;
    scanf("%d %d %d", &N, &M, &K);
    int matrix[N][M];
    while((N >= 1)&&(M >= 1)&&(N <= 1000)&&(M <= 1000))
    {
        for(i = 0; i < N; i++)
        {
            for(j = 0; j < M; j++)
            {
                scanf("%d", &num);
                char c = getchar();
                matrix[i][j] = num;
                if(c == '\n'){break;}
            }
        }

        for(i=0; i<N; i++)
        {
            for(j=0; j<M; j++)
            {
                if(matrix[i][j] == K){++a;}
            }
        }
        (a > 0)?(printf("Yes")):(printf("No"));
        break;
    }
    
    return 0;
}

改进了一下遍历的,删减了重复的部分后的代码:

int main(void) 
{
    int N=0, M=0, K=0;
    int i, j, num, a = 0;
    scanf("%d %d %d", &N, &M, &K);
    int matrix[N][M];
    while((N >= 1)&&(M >= 1)&&(N <= 1000)&&(M <= 1000))
    {
        for(i = 0; i < N; i++)
        {
            for(j = 0; j < M; j++)
            {
                scanf("%d", &num);
                char c = getchar();
                matrix[i][j] = num;
                if(matrix[i][j] == K){++a;}
                if(c == '\n'){break;}
            }
        }

        /*for(i=0; i<N; i++)
        {
            for(j=0; j<M; j++)
            {
                if(matrix[i][j] == K){++a;}
            }
        }*/
        (a > 0)?(printf("Yes")):(printf("No"));
        break;
    }
    
    return 0;
}

得到的结果如图所示:可以看到运行时间提升了但是内存释放了不少, alt