例一:百钱买白鸡
1,问题描述:
公鸡每只5元,母鸡每只3元,三只小鸡1元,用100元买100只鸡,问公鸡、母鸡、小鸡各多少只?
例二:使用枚举法解决“填写运算符问题”
1,问题描述:在下面的算式中,添加“+”、“-”,“*”,“/”,4个运算符,使得这个式子成立。
5 5 5 5 5=5
例一:
public static void buyChicken() {
int gj = 0;
int mj = 0;
int xj = 0;
int sum = 0;
for (gj = 0; gj < 20; gj++) {
for (mj = 0; mj <= 33; mj++) {
xj = 100 - mj - gj;
if (xj % 3 == 0 && xj * 1 / 3 + 5 * gj + 3 * mj == 100) {
System.out.println("公鸡:" + gj + "母鸡:" + mj + "小鸡:" + xj);
}
}
}
}
例二:
public static void yunSuan() {
int j = 0; //遍历变量
int i[] = new int[5];//表示四个运算符
int sign;//累加运算时的符号
int result = 0;//最终运算结果
int count = 0;//可能的结果数
float left, right;//运算过程中位于符号左右的结果
char oper[] = { ' ', '+', '-', '*', '/' };//char型符号,用于打印
Scanner a = new Scanner(System.in);//输入五个操作数和想要获得的运算结果
int n = 6;
int[] arr = new int[n];
for (int m = 0; m < n; m++) {//将输入的五个数放入数组
int x = a.nextInt();
arr[m] = x;
}
for (int y = 0; y < arr.length; y++) {//打印需要运算的五个数
System.out.print(arr[y]);
}
for (i[1] = 1; i[1] <= 4; i[1]++)
// 循环4种运算符,1表示+,2表示-,3表示*,4表示 将0设置为空不使用,是为了可以利用同一个j进行操作数数组和运算符数组的遍历。
{
if ((i[1] < 4) || (arr[2] != 0)) // 运算符若是/,则第二个运算数不能为0,(注:“||”是或运算,两个条件至少要有一个成立,即第一个运算符为/时,第二个运算数不为0)
{
for (i[2] = 1; i[2] <= 4; i[2]++) {
if ((i[2] < 4) || (arr[3] != 0)) // 当第二个运算符为/时,第三个运算数不为0
{
for (i[3] = 1; i[3] <= 4; i[3]++) {
if ((i[3] < 4) || (arr[4] != 0)) // 当第三个运算符为/时,第四个运算数不为0
{
for (i[4] = 1; i[4] <= 4; i[4]++) {
if ((i[4] < 4) || (arr[5] != 0)) // 当第四个运算符为/时,第五个运算数不为0
{
// 主要运算步骤
left = 0;
right = arr[1];//取操作数的第一个
sign = 1;//将char类型运算符数组对应转化为sgin
// 使用case语句,将4种运算符填到对应的空格位置,并进行计算
for (j = 1; j <= 4; j++) {
switch (oper[i[j]]) {
case '+':
left = left + sign * right;//将计算结果变为左
sign = 1;
right = arr[j + 1];//将操作数数组索引后移
break;
case '-':
left = left + sign * right;
sign = -1;
right = arr[j + 1];
break;
case '*':
right = right * arr[j + 1];
break;
case '/':
right = right / arr[j + 1];
break;
}
}
result = arr[5];
// 开始判断,如果运算式子的结果和输入的结果相同,则表示找到一种算法,并输出这个解
if (left + sign * right == result) {
count++;
for (j = 1; j <= 4; j++)
System.out.print(arr[j] + "" + oper[i[j]]);
System.out.print("=" + result);
System.out.println();
System.out.println(count + ":");
}
}
}
}
}
}
}
}
}
}