洛谷 P1071 潛伏者 C語言題解

2021-10-03 17:38:33 字數 1345 閱讀 8630

附上**

#include

#include

#include

typedef

struct

dic;

int cnt =0;

char a[

101]

;char b[

101]

;char message[

101]

;int

exist

(dic book,

char n1,

char n2)

//判斷在字典中是否已經存在,不存在返回0,

//存在對應相同的返回1,存在對應不同的返回2

if(book[i]

.cur == n2)

//結果相等

}return0;

}void

sort

(dic book)

//將其排序

}void

printmessage

(dic book,

char message)

}int

main()

else

elseif(

exist

(book,a[i]

,b[i])==

0)//不存在

elseif(

exist

(book,a[i]

,b[i])==

2)//存在矛盾,程式結束

if(cnt ==26)

//收集滿所有字母

break;}

}sort

(book)

;printmessage

(book,message)

;return0;

}

刪除線格式

這道題從思路來想是不難的,但是需要考慮一下比較小的點,下面為大家說明:

這道題我選擇用乙個結構體陣列來儲存對應的密碼字母和解密後的字母。

類似字典型別,

在儲存的時候要注意有沒有密碼字母相同但是解密字母不同或者解密字母相同但是密碼字母不同的情況,這都是不符合題目要求的一一對應的原則,可以直接輸出failed,然後結束程式。

如果以開始的兩個陣列不夠26個字母,那最後一定會有字母沒有被記錄,也可以直接跳出。

在避過了以上所有的障礙之後,終於可以對密碼進行解密了,但在這之前,我們要先對結構體陣列進行排序,按照a~z的順序,這樣我們再輸出的時候可以方便很多,也可以省不少時間,這個題可以直接使用氣泡排序,不用什麼快排之類的操作。

之後就可以按照密碼對應我們整理的字典開始輸出了,這道題完成ac。

刪除線格式

溜了溜了~~

題解 洛谷P1071 潛伏者

題意概括 給你一段原來截獲的英文密碼和與之對應的明文,如果密碼表非f a法,輸出 failed 否則翻譯現在給你的一句密文並輸出。所有字母均為大寫 有兩種情況視為密碼表非法 1 所有資訊掃瞄完畢,但發現有字母在原資訊中沒有出現 密碼表脫漏 2 掃瞄中發現掌握的資訊裡有明顯的自相矛盾或錯誤 密碼表錯亂...

洛谷 P1071 潛伏者

題目描述 r 國和 s 國正陷入戰火之中,雙方都互派間諜,潛入對方內部,伺機行動。歷盡艱險後,潛伏於 s 國的 r 國間諜小 c 終於摸清了 s 用密碼的編碼規則 1 s 方內部欲傳送的原資訊經過加密後在網路上傳送,原資訊的內容與加密後所得的內容均由大寫字母 a z 構成 無空格等其他字元 2 s ...

題解 P1071 潛伏者

題目所述 如某條資訊 xyz 被翻譯為 aba 就違反了 不同字母對應不同密字 的規則。其實還有另外一種違反情況需要考慮 資訊 opo 被翻譯為 jkl 這時也要輸出failed。就像dna的鹼基對一樣。includeusing namespace std char s 120 sb 120 str...