读书简友广场心理

24点游戏

2023-08-30  本文已影响0人  舍念清净

24点游戏中,给定的数字区间为1-10,试问有多少组不同数字组合可供计算24点(含不能计算出24点的)?

有人说:总共10000种组合,其中 1442种组合无法计算得出24点 (仅限 加减乘除,包括分数);

剩余的 8558 种组合 均可以计算得出 24点

还有人说

其实就是有多少个4个数字的不同集合(1234)与(1324)是同一个集合

我用排列组合计算应该是:

c(10.4)+c(10,3)*c(3,1)+c(10,2)*(c(2,1)+c(2,2))+c(10,1)

=(10*9*8*7)/(4*3*2*1)+(10*9*8)/(3*2*1)*(3)+(10*9)/(2*1)(2+1)+10

=210+360+45*3+10=715

能计算24点的数字组合:

0006 0013 0014 0015 0022 0023 0024 0025 0026 0027 0028 0029 0034 0035 0036 0037 0038 0039 0044 0045 0046 0047 0048 0055 0056 0057 0059 0067 0078 0112 0113 0114 0117 0122 0123 0124 0125 0126 0127 0128 0133 0134 0135 0136 0137 0138 0139 0144 0145 0146 0149 0155 0156 0157 0158 0159 0166 0167 0168 0169 0177 0178 0179 0188 0222 0223 0224 0225 0226 0227 0228 0229 0233 0234 0235 0236 0237 0238 0239 0244 0245 0246 0247 0248 0249 0255 0256 0257 0258 0259 0266 0267 0268 0269 0277 0279 0288 0289 0333 0335 0336 0338 0339 0344 0345 0346 0347 0348 0356 0357 0359 0366 0367 0368 0369 0377 0379 0388 0389 0399 0444 0445 0446 0447 0448 0455 0456 0457 0458 0459 0466 0467 0468 0469 0478 0479 0488 0489 0499 0557 0558 0559 0566 0568 0569 0577 0578 0579 0588 0666 0667 0668 0669 0677 0678 0688 0689 0699 0779 0788 0789 0888 1118 1126 1127 1128 1129 1134 1135 1136 1137 1138 1139 1144 1145 1146 1147 1148 1149 1155 1156 1157 1158 1166 1168 1169 1188 1224 1225 1226 1227 1228 1229 1233 1234 1235 1236 1237 1238 1239 1244 1245 1246 1247 1248 1249 1255 1256 1257 1258 1259 1266 1267 1268 1269 1277 1278 1279 1288 1289 1333 1334 1335 1336 1337 1338 1339 1344 1345 1346 1347 1348 1349 1356 1357 1358 1359 1366 1367 1368 1369 1377 1378 1379 1388 1389 1399 1444 1445 1446 1447 1448 1449 1455 1456 1457 1458 1459 1466 1467 1468 1469 1477 1478 1479 1488 1489 1555 1556 1559 1566 1567 1568 1569 1578 1579 1588 1589 1599 1666 1668 1669 1679 1688 1689 1699 1779 1788 1789 1799 1888 1889 2223 2224 2225 2227 2228 2229 2233 2234 2235 2236 2237 2238 2239 2244 2245 2246 2247 2248 2249 2255 2256 2257 2258 2259 2266 2267 2268 2269 2277 2278 2288 2289 2333 2335 2336 2337 2338 2339 2344 2345 2346 2347 2348 2349 2355 2356 2357 2358 2359 2366 2367 2368 2369 2377 2378 2379 2388 2389 2399 2444 2445 2446 2447 2448 2449 2455 2456 2457 2458 2459 2466 2467 2468 2469 2477 2478 2479 2488 2489 2499 2557 2558 2559 2566 2567 2568 2569 2577 2578 2579 2588 2589 2666 2667 2668 2669 2678 2679 2688 2689 2699 2778 2788 2789 2888 2889 2899 3333 3334 3335 3336 3337 3338 3339

3344 3345 3346 3347 3348 3349 3355 3356 3357 3359 3366 3367 3368 3369 3377 3378 3379 3389 3399 3444 3445 3446 3447 3448 3449 3455 3456 3457 3458 3459 3466 3468 3469 3477 3478 3479 3489 3499 3556 3557 3558 3559 3566 3567 3568 3569 3578 3579 3588 3589 3599 3666 3667 3668 3669 3677 3678 3679 3688 3689 3699 3777 3778 3779 3788 3789 3799 3888 3889 3899 3999 4444 4445 4446 4447 4448 4449 4455 4456 4457 4458 4468 4469 4477 4478 4479 4488 4489 4555 4556 4557 4558 4559 4566 4567 4568 4569 4577 4578 4579 4588 4589 4599 4666 4667 4668 4669 4677 4678 4679 4688 4689 4699 4777 4778 4788 4789 4799 4888 4889 4899 5555 5556 5559 5566 5567 5568 5577 5578 5588 5589 5599 5666 5667 5668 5669 5677 5678 5679 5688 5689 5699 5779 5788 5789 5888 5889 6666 6668 6669 6679 6688 6689 6789 6799 6888 6889 6899 7889

0代表10

共计: 565个

算法描述:

计数值count初始化为零

变量N初始为0,步长为1,终止值9999

当变量N的条件:个位数>=10位数 并且 10位数>=百位数 并且 百位数>=千位数

满足时 count计数加一, 不满足时,继续一下数

输出计数值count

public int getArrayNUm() {

int count = 0;

for (int n=0; n<=9999; n++) {

if (n%10 >= (n/10)%10 && (n/10)%10 >= (n/100)%10 && (n/100)%10 >= (n/1000)%10) {

count = count + 1;

}

}

return count;

}

count=715

上一篇下一篇

猜你喜欢

热点阅读