學 C
要 學 C
+ 都 要 學 C
-----------
2 0 0 8
不同漢字代表不同數字(0~9),同一漢字代表同一數字。最高位「都」「要」「學」不能為 0。求四字對應數字。
都 = a (1~2)、要 = b (1~9)、學 = c (1~9)、C = d (0~9)(c*10+d) + (b*100+c*10+d) + (a*1000+b*100+c*10+d) = 2008四重巢狀迴圈暴力搜尋,僅 9×9×9×10 = 7290 種組合,瞬間完成。
#include <stdio.h>
int main()
{
int a, b, c, d, l, m, n, flag = 0;
for (a = 1; a < 3; a++) // 都:千位,和為2008故只能1或2
for (b = 1; b < 10; b++) // 要
if (a != b)
for (c = 1; c < 10; c++) // 學
if (c != a && c != b)
for (d = 0; d < 10; d++) // C
if (d != c && d != a && d != b) {
n = c * 10 + d; // 學C
m = b * 100 + c * 10 + d; // 要學C
l = a * 1000 + b * 100 + c * 10 + d; // 都要學C
if (n + m + l == 2008) {
printf("都=%d 要=%d 學=%d C=%d\n", a, b, c, d);
flag = 1;
}
}
if (!flag) printf("無解!\n");
return 0;
}
都=1 要=9 學=0 C=8
驗證:08 + 908 + 1908 = 2008 ✓
continue 條件提前剪枝此類「字謎/數獨」問題是鍛鍊窮舉搜尋與約束滿足思維的經典素材。