1 9新增運算子使其和為100

2021-09-28 14:52:01 字數 1575 閱讀 2309

問題描述:

設計乙個演算法再1、2、3.......9(順序不能變)數字之間插入+或者-或者什麼都不插入,使得計算結果為100的程式,輸出所有的可能性,例如:1+2+34-5+67-8+9=100;

思路:如果1+2+3...到最後乙個數字發現不能為100,則先退回到倒數第二個結點,從該結點選擇另外的符號;

這個過程就是典型的回溯方法,因此可以使用回溯的方法來求解該問題:

**:

#include#include#include#include#include using namespace std;

//1,2,3,4,5,6,7,8,9在其中任意插入+,-或者不加,使得結果為100,-1為加,-2為減

int calresult(int *result)

int n = atoi(result2);

if (status == -1)

else

if (result[i] == -1)

else

index = i+1;

}} }

return sum;

}void display(int *result)

if (result[i] == -2 && result[i + 1] == -1)

if (result[i] == -1)

else if (result[i] == -2)

else

} cout << " = 100" << endl;

cout << endl;

}//回溯

void findonehundard(int *a, int *result, int n, int re_n)

return;

} for (int i = 0; i < 3; i++)

findonehundard(a, result, n + 1, re_n+2);

} else if (i == 1)

findonehundard(a, result, n + 1, re_n + 2);

} else

findonehundard(a, result, n + 1, re_n + 1);

} }}

int main() ;//原數字空間

int result[20];

for (int i = 0; i < 20; i++)

findonehundard(a, result, 0, 0);

system("pause");

return 0;

}

執行結果:

(中間還有一些結果沒有顯示出來)

新增運算子 LintCode

給定乙個僅包含數字 0 9 的字串和乙個目標值,返回在數字之間新增了 二元 運算子 不是一元 或 之後所有能得到目標值的情況。樣例 123 6 1 2 3 1 2 3 232 8 2 3 2 2 3 2 105 5 1 0 5 10 5 00 0 0 0 0 0 0 0 3456237490 919...

運算和運算子

運算 乙個或者乙個以上的資料經過變化得到新值的過程。運算子 用於運算的符號就是運算子 分類 1.算數運算 2.比較運算 關係運算 3.賦值運算 4.邏輯運算 5.位運算 6.成員運算 7.身份運算 1.算數運算 加法運算 減法運算 乘法運算 除法運算 地板除運算 取商運算 取餘運算 求模運算 冪運算...

關係運算子和等於運算子

有些groovy控制語句,如if和while控制語句 參見第8章 通常會使用條件 condition 來進行判斷。條件決定表示式的值為真或者假。關係運算子 等於運算子和邏輯運算通常被用於構造條件表示式 附錄c會詳細討論邏輯運算子 關係運算子如表2 5所示。四種運算子均為二元運算子,每種運算子都使用兩...