第1周測驗題解 特殊密碼鎖

2021-10-21 08:50:24 字數 1309 閱讀 2944

本題與郭老師本週講解的例題熄燈問題類似,可以使用二進位制表示進行列舉。每個按鈕有按下、不按下兩種選擇(分別用0、1兩個狀態表示)。每個按鈕最多隻需要按下一次,因為連續兩次按下會恢復原狀態。對於每乙個按鈕,當其狀態確定後;為使其達到目標狀態,只能通過其右側按鈕進行控制。因此,最左側按鈕狀態確定後,其餘按鈕狀態隨即確定。我們根據遍歷過程即可確定按鈕改變次數以及能否達成目標。

題目中沒有給定按鈕數量,我們需要根據第一行資料進行統計。

在某些特殊情況下,無論第乙個按鈕是否按下都能得到目標狀態;這時要選取改變次數較少的方案作為答案。

需要注意邊界情況,即按鈕左右兩個端點;本人選擇將陣列開大一些,兩個端點對左右按鈕的影響仍然在陣列中使其不必特別考慮。

問題分析清楚並給出坑點後,下面貼出ac**。

#include

#include

#include

using

namespace std;

int lock[32]

;//記錄密碼鎖初始狀態

int result[32]

;//記錄密碼鎖當前狀態

int target[32]

;//記錄密碼鎖目標狀態

int method[32]

;//記錄按鈕按動方案

bool flag =

false

;int

init()

for(

int i=

1;i<=n;

++i)

return n;

}void

set_bit

(int n)

intcount_one

(int n)

return counts;

}int

bin_lock

(int n)}if

(result[n]

== target[n]

)//恢復現場

for(

int i=

1;i<=n;

++i)

method[1]

=1;//第乙個按鈕按下

set_bit(1

);for(

int i=

2;i<=n;

++i)}if

(result[n]

== target[n]

)return min;

}int

main()

珠心算測驗 題解

見鏈結 首先,我要說一句 既然題目說要去重,那不就是用個set嗎?建立乙個查詢用的set和乙個去重的set。由於這道題n 100 n le 100 n 10 0,而stl的set插入與查詢的時間複雜度均為o log n operatorname o operatornamen o logn 所以可以...

期末測驗 課程水平綜合測驗 第10周

這是python123官網上聯合mooc的python程式設計 第10期 答案 基礎題,讀取輸入後把空格去掉即可 題目要求統計不重複的行,而集合中的元素正好擁有不重複的特性,由此想到使用集合進行訪問,能存進集合的行一定不重複,最後統計集合元素個數即可。s set num 0 f open latex...

鞍點 第7周測驗與作業

題目內容 給定乙個n n矩陣a。矩陣a的鞍點是乙個位置 i,j 在該位置上的元素是第i行上的最大數,第j列上的最小數。乙個矩陣a也可能沒有鞍點。你的任務是找出a的鞍點。輸入格式 輸入的第1行是乙個正整數n,1 n 100 然後有n行,每一行有n個整數,同一行上兩個整數之間有乙個或多個空格。輸出格式 ...