You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OJ判题错误求助:团队成员统计问题代码排查

问题描述

房间里有N×N个人,每人属于编号1到N的某支队伍,衬衫上印着0到N的数字——0代表观众,其他数字对应所属队伍编号。莉莉需要统计不完整的队伍数量,不完整的定义是该队伍在场成员数不足N名。

输入格式

  • 第一行输入整数N(参赛队伍总数)
  • 接下来N行,每行包含N个整数Aij(取值0到N),代表对应位置人的衬衫数字

约束条件

  • 1 ≤ N ≤ 100

输出格式

输出房间里不完整的队伍数量

样例输入1

2
1 0
2 2

输出1

1

样例输入2

3
3 0 2
2 0 2
1 3 3

输出2

1
我的代码提交后始终被判错误
#include <stdio.h>

int main() {
  int n, array[101][101], i, j, count = 0, k, x = 0;

  scanf("%d", &n);

  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      scanf("%d", &array[i][j]);
    }
  }

  for (k = 0; k < n; k++) {
    for (i = 0; i < n; i++) {
      for (j = 0; j < n; j++) {
        if (array[i][j] == k + 1) {
          count += 1;
        }
      }
    }

    if (count != n) {
      x += 1;
    }
    count = 0;
  }

  printf("%d\n", x);
  return 0;
}
问题分析与修正

你的代码核心错误在于判断条件:题目要求统计成员数不足N的队伍,但你写的是count != n——这会把成员数超过N的队伍也误判为不完整队伍。比如当N=2时,某队伍有3个成员,你的代码会错误地将其计入不完整队伍数量。

修正后的代码只需把判断条件改为count < n,同时将count的初始化移到内层循环开头,逻辑更稳妥:

#include <stdio.h>

int main() {
  int n, array[101][101], i, j, count, k, x = 0;

  scanf("%d", &n);

  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      scanf("%d", &array[i][j]);
    }
  }

  for (k = 0; k < n; k++) {
    count = 0;
    for (i = 0; i < n; i++) {
      for (j = 0; j < n; j++) {
        if (array[i][j] == k + 1) {
          count += 1;
        }
      }
    }

    if (count < n) {
      x += 1;
    }
  }

  printf("%d\n", x);
  return 0;
}

内容的提问来源于stack exchange,提问作者abbyrabbit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 02:50:41