等式構造(equation)清華推免生機考第三題

2021-06-29 00:11:14 字數 921 閱讀 3998

等式構造(equation)

【問題描述】

n個1至9之間的數字按照一定的順序寫成一排,要求在其中插入乙個等號和任意數量的加號使其構成乙個等式。

例如,若n=5,給出的5個數字是1、2、3、6、9,那麼可以構造如下的等式:

12+3=6+9

有時可構造出的等式不止一種,例如當n=4時,若給出的數字依次為1、2、1、2,則可構造如下2個等式:

12=12

1+2=1+2

而對於有些情況,則無法構成等式,例如當n=4時,若給出的數字依次為1、2、3、4,就無法構成等式。

【輸入資料】

輸入檔案:equation.in

第一行:有乙個整數n,表示數字的個數(1我想到的是這是一道搜尋題,要求在其中插入乙個等號和任意數量的加號使其構成乙個等式,

那麼在沒有加入等號之前每乙個間隙中可以有三種選擇,乙個是插入=,乙個是什麼都不插入,還有就是插入+,如果已經插入了等號了那麼後面的間隙出就只能插入+或者什麼都不插入了。

可是使用剪枝,減少不必要的搜尋,從而提高執行的速度。由於所有的數字都是1到9之間的,假設在前k(k好了,說得太多也不好,還是直接給出程式**,大家自己好好理解吧。

#include #include #include using namespace std;

int val[20];

int n,k;

int tot = 0;

void search2(int ni,int lsum,int rsum,bool hasequal)

if(lsum<=rsum)//剪枝條件可以放在這裡會有很大的功效

return;

if(hasequal==false)

else

}int main()

return 0;

}

清華大學演算法訓練營 等式

時間限制 2s,空間256mb 問題描述 n個變數和m個 相等 或 不相等 的約束條件,請你判定是否存在一種賦值方案滿足所有m個約束條件。輸入第一行乙個整數t,表示資料組數。t 100 接下來會有t組資料,對於每組資料 第一行是兩個整數n,m,表示變數個數和約束條件的個數。1 n,m 500000 ...

等式 清華OJ 訓練營 c 實現

描述 有n個變數和m個 相等 或 不相等 的約束條件,請你判定是否存在一種賦值方案滿足所有m個約束條件。輸入第一行乙個整數t,表示資料組數。接下來會有t組資料,對於每組資料 第一行是兩個整數n,m,表示變數個數和約束條件的個數。接下來m行,每行三個整數a,b,e,表示第a個變數和第b個變數的關係 若...

2017清華軟院推免機考 面經

清華軟院分機考和面試兩部分,前一天下午機考,第二天上午面試,機考的環境為vs2012,語言為c 沒有online judge,完成3道題之後將 存在電腦裡就可以走了。題目如下 1 兩個數相加,從右邊起第一位的進製是第乙個素數,第二位的進製是第二個素數 以此類推 2 給定乙個整數和乙個字串,比如20 ...