这是一个典型的约束满足问题,即从可能的解空间(3种鸡的个数)中找到满足要求(鸡的数量等于100,价格等于100)的解。对这类问题,基本的做法就是通过循环语句遍历整个解空间,判断当前找到的解能否满足要求,如果满足则输出,否则继续寻找,直至搜索完毕。
假定i为公鸡数(i≤20
),j为母鸡数(j≤33
),k为小鸡数(k≤300
),如果条件(5*i十3*j+k/3==100
)和(i+j+k==100
)同时成立,则意味着找到一个满足约束的解,否则应该继续试探下一个解,比如将i或j加1,或将k加3(加1或加2都可能出现无法除尽的情况)。
public class Chick {public static void main(String[] args) {int count = 0;for(int i=0;i<=20;i++) {for(int j=0;j<34;j++) {for(int k=0;k<=300;k=k+3) {if((5*i+3*j+k/3==100)&&(i+j+k==100)) {System.out.println("公鸡:"+i+"母鸡:"+j+"小鸡:"+k);count++;}}}}System.out.println("共有"+count+"购鸡方案");}}
运行结果:
java编程:假定公鸡5元钱1只 母鸡3元钱1只 小鸡1元钱3只。现在有100元钱要求买100只鸡 请编程列出所有可能的购鸡方案。