藍橋杯 寒假作業

2021-08-17 23:17:36 字數 1559 閱讀 5482

寒假作業:

現在小學的數學題目也不是那麼好玩的。

看看這個寒假作業:

□ + □ = □

□ - □ = □

□ × □ = □

□ ÷ □ = □

每個方塊代表1~13中的某乙個數字,但不能重複。

比如:6  + 7 = 13

9  - 8 = 1

3  * 4 = 12

10 / 2 = 5

以及:

7  + 6 = 13

9  - 8 = 1

3  * 4 = 12

10 / 2 = 5

就算兩種解法。(加法,乘法交換律後算不同的方案)

你一共找到了多少種方案?

請填寫表示方案數目的整數。

注意:你提交的應該是乙個整數,不要填寫任何多餘的內容或說明性文字。

用全排列再進行判斷時間太長,**跑不出來,很心塞。。。。用和上篇方格填數的思路來寫。對每個位置進行不重複的填數。因為是標準的二維陣列,所以不需要用額外的flag陣列來看是不是可以填數。要注意的是vis陣列表示的是從1-13的數,在這裡我們捨棄0,從1開始訪問。明顯全排列再判斷複雜度太高,所以我們對於其做剪枝,每次填數都去判斷一下。不滿足其中乙個等式就返回,以便減少演算法的複雜度。

#include#includeusing namespace std;

int vis[14];

int map[4][3];

int sum;

int judge(int n)

if (n % 12 == 5)//第二個等式

if (n % 12 ==8)//第三個等式

if (n % 12 == 11)//第四個等式,判斷完畢

printf("%d+%d=%d\n", map[0][0], map[0][1], map[0][2]);

printf("%d-%d=%d\n", map[1][0], map[1][1], map[1][2]);

printf("%d*%d=%d\n", map[2][0], map[2][1], map[2][2]);

printf("%d/%d=%d\n\n", map[3][0], map[3][1], map[3][2]);

}return 1;

}void dfs(int n)

if (x == 4)//填滿數判斷

else

dfs(n + 1);

vis[i] = 0;

}} }

}int main()

簡化後****)

using namespace std;  

int a[20],vis[20],sum=0;

void dfs(int x)

for(int i=1; i<=13; i++)//列舉要填的數

} return;

} int main()

藍橋杯 寒假作業

現在小學的數學題目也不是那麼好玩的。看看這個寒假作業 如果顯示不出來,可以參見 圖1.jpg 每個方塊代表1 13中的某乙個數字,但不能重複。比如 6 7 13 9 8 1 3 4 12 10 2 5 以及 7 6 13 9 8 1 3 4 12 10 2 5 就算兩種解法。加法,乘法交換律後算不同...

藍橋杯 寒假作業

寒假作業 寒假作業 現在小學的數學題目也不是那麼好玩的。看看這個寒假作業 如果顯示不出來,可以參見 圖1.jpg 每個方塊代表1 13中的某乙個數字,但不能重複。比如 6 7 13 9 8 1 3 4 12 10 2 5 以及 7 6 13 9 8 1 3 4 12 10 2 5 就算兩種解法。加法...

藍橋杯 寒假作業

題目描述 現在小學的數學題目也不是那麼好玩的。看看這個寒假作業 每個方塊代表1 13中的某乙個數字,但不能重複。比如 6 7 139 8 13 4 1210 2 5 以及 7 6 139 8 13 4 1210 2 5 就算兩種解法。加法,乘法交換律後算不同的方案 你一共找到了多少種方案?輸入 輸出...