不懂就问,下面两段代码有什么区别吗
查看原帖
不懂就问,下面两段代码有什么区别吗
71990
Surferer楼主2021/2/5 12:59

全AC代码:

/**
	     * @param   chinese[i]   表示第i位学生的语文成绩,math[i],english[i]同
	     * @param	total_i		表示第i位学生的总成绩,total_j同
	     * @param	cnt		统计对数
	     */
		int cnt = 0;
		for (int i = 0; i < n; i++) {
			int total_i = chinese[i] + math[i] + english[i];
			for (int j = i+1; j < n; j++) {
				int total_j = chinese[j] + math[j] + english[j];
				if (Math.abs(chinese[i] - chinese[j]) <= 5 &&
					Math.abs(math[i] - math[j]) <= 5 &&
					Math.abs(english[i] - english[j]) <= 5 &&
					Math.abs(total_i - total_j) <= 10) {
					cnt++;
				}
			}
		}

全WA代码:

int cnt = 0;
		for (int i = 0; i < n; i++) {
			int toti = chinese[i] + math[i] + english[i];
			for (int j = i+1; j < n; j++) {
				int totj = chinese[j] + math[j] + english[j];
				if (Math.abs(toti - totj) > 10) {
					break;
				}
				if (Math.abs(chinese[i] - chinese[j]) > 5) {
					break;
				}
				if (Math.abs(math[i] - math[j]) > 5) {
					break;
				}
				if (Math.abs(english[i] - english[j]) > 5) {
					break;
				}
				cnt++;
			}
		}

AC代码是在1个if语句中判断是否满足所有条件,而WA代码是分了4个if语句分别判断是否满足条件,但为什么前者AC,而后者WA?

2021/2/5 12:59
加载中...