[请问] C语言写法?(数学排列)

楼主: jpjpjp (jp)   2025-07-08 10:26:23
大家好,
数学题目如下↓
哨音,长3秒、短2秒,皆间隔1秒,现历时25秒,有几种组合方式?答:49。
我可以用c写出它的组合方式是(x, y)=(2, 6), (5, 2)
但要如何才能用c,同时算出排法有49种呢?
附上原始码,感谢回复!
int j=1;
for (int x=1; x<=10; x++) {
for (int y=1; y<=10; y++) {
if (((4*x)+(3*y))==26)
printf("(x, y)=(%d, %d), 4x*3y=%2d, run=%d\n", x, y,
(4*x+3*y), j);
j++;}}
return 0;}
/* (x, y)=(2, 6), 4x*3y=26, run=16
(x, y)=(5, 2), 4x*3y=26, run=42 */
楼主: jpjpjp (jp)   2025-07-08 10:27:00
xy的初始范围有更好的设定方式吗?毕竟一开始皆无知。
作者: blackbox (黑盒子)   2025-07-08 10:55:00
找到(2,6)(5,2)接下来就算C(8,2)跟C(7,2)
作者: kobe8112 (小B)   2025-07-08 11:00:00
你应该先问问自己,你的起始条件跟终止条件的值是怎么决定的
作者: gfang (G方)   2025-07-09 00:34:00
问AI不是比较快
楼主: jpjpjp (jp)   2025-07-09 08:26:00
预先知道答案才设10,但想问在未知情况下,如何找到最佳?
作者: yeeouo (林翔)   2025-07-09 12:29:00
代码问题一律问claude
作者: Ricestone (麦饭石)   2025-07-09 13:49:00
这程式码是你写的吗? 没有规定要用什么方法解吗?如果这样的算法可以接受,那这限制条件你就直接想全都长也就顶多9个y,全都短也就顶多13个x而已这个顶多怎么来,就是除法讲错,是7个x与9个y喔有用等号的话那就都各减1各减2才对 另外为什么你的x,y,j初始都设1?j都没印到的话是没差啦 只是一贯性比较低

Links booklink

Contact Us: admin [ a t ] ucptt.com