卫条件

来源:互联网 发布:win10查看电脑mac地址 编辑:程序博客网 时间:2024/05/17 02:00

卫条件,核心思想就是只找反例,return出去下面我们通过一个小题目来演示:


这里如果我们用传统的if来判断,那么绕的太多了,所以我们只需将每一个条件不满足的return false 就行了。

具体实现代码如下:

package cn.hncu.part1;/* *1)A,B两人至少有1人参加会议; 2)A,E,F 3人中有2人参加会议; 3)B和C两人一致决定,要么两人都去,要么两人都不去; 4)A,D两人中只1人参加会议; 5)C,D两人中也只要1人参加会议; 6)如果D不去,那么E也决定不去。 */public class join {public static void main(String[] args) {for (int a1 = 0; a1 <= 1; a1++) {for (int a2 = 0; a2 <= 1; a2++) {for (int a3 = 0; a3 <= 1; a3++) {for (int a4 = 0; a4 <= 1; a4++) {for (int a5 = 0; a5 <= 1; a5++) {for (int a6 = 0; a6 <= 1; a6++) {if (ok(a1, a2, a3, a4, a5, a6)) {System.out.println("a1--" + a1 + ",a2--"+ a2 + ",a3--" + a3 + ",a4--" + a4+ ",a5--" + a5 + ",a6--" + a6);break;}}}}}}}}private static boolean ok(int a1, int a2, int a3, int a4, int a5, int a6) {if (!(countGo(a1, a2) >= 1)) {// A,B两人至少有1人参加会议;return false;}if (!(countGo(a1, a5, a6) == 2)) {// A,E,F 3人中有2人参加会议;return false;}if (!(countGo(a2, a3) == 2 || countGo(a2, a3) == 0)) {// B和C两人一致决定,要么两人都去,要么两人都不去;return false;}if (!(countGo(a1, a4) == 1)) {// A,D两人中只1人参加会议;return false;}if (!(countGo(a3, a4) == 1)) {// C,D两人中也只要1人参加会议;return false;}if (countGo(a4) == 0 && countGo(a5) == 1) {// 如果D不去,那么E也决定不去。return false;}return true;}private static int countGo(int... mee) {int count = 0;for (int me : mee) {if (me == 1) {count++;}}return count;}}


0 0
原创粉丝点击