简单的题目,编程的思想
实验室需要带萌新,简单帮学弟入门编程,自己也是在大学的最后一年了。
出了一道简单的编程题:
求满足4x+6y=20的所有非负整数解。
自己当时也没想太多,纯粹是让练练手,不过大家提交的答案却能投射出编程的一些思想。
做法一
循环执行次数:21*21=441。
这个也是最直观的做法。
1 | private static void test1() { |
做法二
利用2层while循环,在执行过程判断x,y的和与20的关系。
循环执行次数:5+4+4+3+2+2=20。
1 | private static void test2() { |
做法三
较做法1缩小了范围。
化简4x+6y=20为2x+3y=10。
循环执行次数:4*6=24。
1 | private static void test3() { |
做法四
是做法三的改进,一个简单的数学不等式,将一个未知数用另一个未知数表示。
循环执行次数:14。
1 | private static void test4() { |
做法五
利用做法四的数学关系,进一步优化。
循环执行次数:4。
1 | private static void test5() { |
总结
简单的题目,详细探究还是能体现编程的一些思想的。
接下来,在一起讨论下,总结出了以下的通用做法,还是很不错的哈。
求解二元一次方程的通用做法:
1 | private static void test6(int x, int y, int z) { |