2023年廣工蛋協移動部第一周考核第二題部分題解

2021-10-10 08:00:53 字數 2500 閱讀 1308

廢話可以不看: 眾所周知,小鄭是乙個學習機器學習方向的大佬,所謂近朱者赤,小鄭的電腦也大佬了起來,比起上面簡單的猜數字,電腦表示不屑,並表示可以加點難度。小歐因此想了個規則,規則如下:

小歐隨機想乙個三位數(每位的數字都不重複,且每位都不為0),讓電腦猜,電腦輸出乙個猜測的值,小歐就告訴結果 結果格式為 nrnw,即數值對位置也對的為r,數值對位置不對的計為w

例如 小歐想的是369,而電腦猜的是396,那麼數值對位置對的是 3 , 而數值對位置不對的是9和6,,因此結果應該輸出:1r2w 而如果猜457則輸出為0r0w

通過得到的結果電腦繼續猜,直到猜對為止。

看不懂上面的,簡化版如下:​ 寫乙個程式讓電腦猜數字;規則:隨機給出乙個三位數(每位的數字都不重複,且每位都不為0)讓電腦猜,電腦猜測乙個值,便會輸出結果 結果格式為 nrnw,即數值對位置也對的為r,數值對位置不對的計為w;如給出369,電腦猜396則結果是1r2w,而如果猜457則輸出為0r0w,要求經過幾輪電腦就能猜對你的數字

如:小歐隨機想的數字為632則輸出如下:

num is: 632

guess 123

your ans is 0r2w

guess 234

your ans is 1r1w

guess 314

your ans is 0r1w

guess 532

your ans is 2r0w

guess 632

your ans is 3r0w

632合計猜測次數:5次

本程式按實現功能按點給分:事先宣告:我只實現了前兩個功能

1.全程不需要輸入任何東西,說明真的要用隨機數來搞了。

2.三位數要每位數都不重複,且不為0。所以如果只用隨機數rand()%9+1可能會生成相同的數字,要加一些限制條件。

我的具體實現是用兩個陣列,乙個是存放著1-9的val陣列用來提取;另乙個是用於判斷某個數字是否被提取過的judge陣列

然後生成的三位數存放入num(要猜的數字)和guess(電腦猜的)

ps:本身之前我num和guess在main裡各寫了兩個,但感覺兩個重複的片段很高,就寫成了乙個set_hun_num函式,呼叫兩次

3.判斷幾r幾w,我寫了兩個函式。

r的判斷就很簡單,位置對數值對直接乙個條件就好了

w的判斷如果用for巢狀迴圈判斷,會出現重複的情況(因為是3*3),所以要如果這個num的某一位考慮過了就要表明他被判斷過了,具體實現方法是加了乙個判斷陣列。陣列yyds

具體的函式實現方法不在此繁述,請移步**後半部分檢視

整個程式都會有詳細的注釋

為了簡化程式,大改了兩次程式

#include

#include

#include

//隨機數要用到的兩個庫

using

namespace std;

intisr

(char*,

char*)

;//判斷數值對位置也對的函式,傳入兩個陣列作判斷

intisw

(char*,

char*)

;//判斷數值對位置不對的函式,傳入兩個陣列作判斷

void

set_hun_num

(char[4

]);//生成乙個每位都不相同的三位數,存入乙個字元陣列中

intmain()

}return0;

}int

isr(

char

*num,

char

*guess)

return n;

//返回r的個數

}int

isw(

char

*num,

char

*guess)}}

return n;

}void

set_hun_num

(char num[4]

)for

( i =

1; i <=

3; i++

)else

if(judge[t]==1

)//如果被提取過就找另外的數

num[i]

=char

(val[k]

+'0');

}}//於是就生成了這樣的三位數並存進了傳入的字元陣列中

}

後兩部分感覺跟dp有些關係,沒啥思路,放棄。拿完前兩部分的分就跑

下面是執行例項截圖

本題從構思到放棄大概經歷了1天半的時間

2023年第一周

2012年的第一周就這麼過去了。本週只上了兩天的班。周一周二元旦放假,周四公司年會,可是我卻上了4天的班,因為其他幾天都在加班。這是我第三次參加年會,也是第一次參加新公司的年會。年會辦的還不錯,只不過和前兩次一樣,還是觀眾,啥也沒中,拿了陽光普照獎。不過今年還參加了乙個小專案,可惜失敗了。年會上喝了...

2023年九月第一周學習內容

usb轉ttl接線 stm32唯一id讀取 浮動清除注意事項 usb轉ttl接線 stm32唯一id讀取 include sys.h include usart.h include delay.h include key.h u32 get id 3 讀取id號,每次讀取32位 void getst...

2023年寒假第一周筆記(一)DP

dp 動態規劃 思想 簡單來說就是把完整的乙個問題,按照題目要求分解成多個子問題的問題序列,在每乙個子問題中尋找到符合題目要求的最有解,再從子問題序列中尋找符合題目要求的一段序列,以此為答案。那麼什麼情況下使用dp呢?使用dp 動態規劃 的三個要求 1 最優子結構 可以乙個整問題分解成乙個個子問題的...