考虑一个CSP,其中有八个变量A,B,C,D,E,F,G,H,每个变量都具有域{1、2、3、
4}。假设约束为:A≥G,A <H,| F – B |= 1,G <H,| G – C |= 1,| H – C |是偶数,
H≠D,D≥G,D≠C,E≠C,E <D – 1,E≠H – 2,G≠F,H≠F,C≠F,D≠F,| E – F |
求各位大神帮忙跑一下,急求
求各位帮忙,1stopt求解
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
threenewbee 2020-03-29 20:48关注| E – F | 这个条件没写完整,不过最后结果不多,你自己筛选下就可以了。
问题解决的话,请点采纳
#include <stdio.h> #include <string.h> /* 考虑一个CSP,其中有八个变量A,B,C,D,E,F,G,H,每个变量都具有域{1、2、3、 4}。假设约束为:A≥G,A <H,| F – B |= 1,G <H,| G – C |= 1,| H – C |是偶数, H≠D,D≥G,D≠C,E≠C,E <D – 1,E≠H – 2,G≠F,H≠F,C≠F,D≠F,| E – F | */ int abs(int x) { if (x > 0) return x; else return -x; } int main() { int a,b,c,d,e,f,g,h; for (int a = 1; a <= 4; a++) for (int b = 1; b <= 4; b++) for (int c = 1; c <= 4; c++) for (int d = 1; d <= 4; d++) for (int e = 1; e <= 4; e++) for (int f = 1; f <= 4; f++) for (int g = 1; g <= 4; g++) for (int h = 1; h <= 4; h++) { if (a>=g && a < h && abs(f-b)==1 && g<h && abs(g-c)==1 && abs(h-c) %2==0 && h!=d && d>=g&&d!=c&&e!=c&&e<d-1&&e!=h-2&&g!=f&&h!=f&&c!=f&&d!=f) { printf("a=%d,b=%d,c=%d,d=%d,e=%d,f=%d,g=%d,h=%d\n",a,b,c,d,e,f,g,h); } } return 0; }a=1,b=2,c=2,d=4,e=1,f=3,g=1,h=2
a=1,b=3,c=2,d=3,e=1,f=4,g=1,h=2
a=1,b=4,c=2,d=4,e=1,f=3,g=1,h=2
a=2,b=2,c=3,d=4,e=2,f=1,g=2,h=3
a=3,b=1,c=4,d=3,e=1,f=2,g=3,h=4
a=3,b=2,c=2,d=3,e=1,f=1,g=3,h=4
a=3,b=2,c=4,d=3,e=1,f=1,g=3,h=4
a=3,b=3,c=4,d=3,e=1,f=2,g=3,h=4
Press any key to continue . . .本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报