例一:百錢買白雞
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 + ":");
}
}
}
}
}
}
}
}
}
}