UVA1262Password(第K字典序)

題目鏈接

紫書P323

題意:兩個6*5的字母矩陣,兩個矩陣每列相同的字母,每列取一個,求按照字典序第k小的序列

分析:

對于第一個樣例來說,我們得到{ACDW}、{BOP}、{GMOX}、{AP}、{GSU}

則一共有4×3×4×2×3=288種密碼,我們先計算這個數列的后綴積:288、72、24、6、3、1

要確定第一個字母,如果1≤k≤72,則是A;如果73≤k≤144,則是C,以此類推。 k / 72 + 1就是第一個集合中的第幾個元素

求第二個集合的時候,k = k % 72 ...

還有一些處理的細節,在代碼中

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
int k;
char G[2][10][10]; //一個三維的數組存儲兩個矩陣
int vis[2][30],cnt[10],he[10]; //vis[i][j]表示第i個矩陣第j個字母是否訪問,cnt是每一列的總數,he是后綴積
char Select[10][10],ans[10]; //select[i][j]表示第i行第j個字母
int main()
{int test;scanf("%d", &test);while(test--){scanf("%d", &k);for(int i = 0; i < 2; i++){for(int j = 0; j < 6; j++)scanf("%s", G[i][j]);}memset(cnt, 0, sizeof(cnt));for(int i = 0; i < 5; i++)  //找兩個矩陣對應的列中相同的元素處理的很好,對每一列對兩個矩陣一行一行的查找
        {memset(vis, 0, sizeof(vis));for(int j = 0; j < 2; j++)  {for(int m = 0; m < 6; m++)vis[j][ G[j][m][i] - 'A' ] = 1;}for(int j = 0; j < 26; j++){if(vis[0][j] && vis[1][j])  //兩個矩陣同一列都訪問過了Select[i][ ++cnt[i] ] = 'A' + j; //第i列第cnt[i]個放入這個字母
            }}he[5] = 1;for(int i = 4; i >= 0; i--){he[i] = cnt[i] * he[i + 1];}if(k > he[0]){printf("NO\n");continue;}k--; //因為考慮到k == 1的情況for(int i = 0; i < 5; i++){int t = k / he[i + 1];ans[i] = Select[i][t + 1]; //對于每一個字母都是從1開始標號的,整除之后取下一個,就像k = 1時,每一列都得取第一個,對于最后一列的時候 t = 1,那就取第二個了,所以k--k = k % he[i + 1];}ans[5] = '\0';printf("%s\n", ans);}return 0;
}

?

轉載于:https://www.cnblogs.com/zhaopAC/p/5222628.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396757.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396757.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396757.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自定義 View 循環滾動刻度控件

LoopScaleView 先看效果圖: enter description hereLoopScaleView 是一個自定義的刻度尺風格的選值控件,從上面的動圖大家可以看到 LoopScaleView 的運行效果.可以設置屏幕內顯示的刻度數,也可以設置每一個刻度代表的值得大小。 LoopScaleView.class Nested class OnValueChang…

go 類型斷言_(57)接口的類型斷言

GO提供了一個方法&#xff0c;用來判斷接口的底層值是什么類型類型斷言 提供了訪問接口值底層具體值的方式。t : i.(T)該語句斷言接口值 i 保存了具體類型 T&#xff0c;并將其底層類型為 T 的值賦予變量 t。若 i 并未保存 T 類型的值&#xff0c;該語句就會觸發一個panic。為了…

使用web3j構建以太坊錢包

創建一個以太坊錢包有多種方式&#xff0c;一般情況下可以通過geth、EtherumWallet等客戶端。對于前端&#xff0c;可以使用插件MetaMask進行創建。這幾種方式技術實現雖然不同&#xff0c;但底層原理是一致的。本文主要介紹如何通過web3j架構創建一個以太坊的冷錢包&#xff0…

Html、CSS、JavaScript 實時效果在線編輯器 - 學習的好工具,算不算?!

關于 二維碼 與 NFC 之間的出身貧賤說太陽火神的漂亮人生 (http://blog.csdn.net/opengl_es)本文遵循“署名-非商業用途-保持一致”創作公用協議轉載請保留此句&#xff1a;太陽火神的漂亮人生 - 本博客專注于 敏捷開發及移動和物聯設備研究&#xff1a;iOS、Android、Html5、…

android自定義更新,Android 完美解決自定義preference與ActivityGroup UI更新的問題

之前發過一篇有關于自定義preference 在ActivityGroup 的包容下出現UI不能更新的問題&#xff0c;當時還以為是Android 的一個BUG 現在想想真可笑 。其實是自己對機制的理解不夠深刻&#xff0c;看來以后要多看看源碼才行。本篇講述內容大致為如何自定義preference 開始到與Act…

vxlan 資料及其在 neutron中的應用

2019獨角獸企業重金招聘Python工程師標準>>> VXLAN 是一個新興的SDN 標準&#xff0c;它定義了一種新的 overlay 網絡&#xff0c;它主要的創造者是 VMware, Cisco 和 Arista。它被設計來消除虛擬化網絡世界中的 VLAN 數目的限制。VXLAN 本身是一個多播標準&#xf…

橫流式冷卻塔計算風量_研討丨卓展標準高效制冷機房技術之影響冷卻塔效率的幾個因素...

集中制冷用空調系統中&#xff0c;單臺冷卻塔的冷卻水量基本上都小于1,000m/h&#xff0c;且裝有淋水填料的橫流機械通風開式居多。本文將已橫流開式冷卻塔為對象&#xff0c;探討影響其效率的幾個因素。橫流開式冷卻塔示意圖如下所示&#xff1a;橫流開式冷卻塔示意圖 Fig 01說…

我是培訓出來的我怕誰

引子: 江小峰是我帶過的徒弟中跟我最久&#xff0c;也是最聰明的一個。 他一個高中生&#xff0c;沒上過大學&#xff0c;高中畢業后在老家賣了三年電腦&#xff0c;天天給人裝操作系統&#xff0c;有天他在網上看到某培訓機構招生簡介&#xff0c;一時沖動揣上三年血汗錢&…

android平臺gallery2應用分析,Android5.1圖庫Gallery2代碼分析數據加載流程

圖片數據加載流程。Gallery---->GalleryActivity------>AlbumSetPage------->AlbumPage--------->PhotoPage相冊集 照片集 某張圖片1,AlbumSetPage.javaprivate void initializeData(Bundle data) {String mediaPath data…

python開課吧1980課程_開課吧的課程怎么樣?

就那那些編程開發課來說。現在網絡上充斥著大量的編程開發課程&#xff0c;什么python的&#xff0c;java的&#xff0c;c的&#xff0c;而且名字一個比一個夸張&#xff0c;21天精通c&#xff0c;7天熟練運用java&#xff0c;3天掌握python核心代碼&#xff0c;這些課程標題簡…

專業概念

1.JDBC: java數據庫連接&#xff08;JDBC&#xff09;用于在java程序中實現數據庫的操作功能&#xff0c;它提供了執行sql語句&#xff0c;訪問各種數據庫的方法&#xff0c;并為各種不同的數據庫提供統一的操作接口&#xff0c;java.sql包中 包含了jdbc操作數據庫的所有類 2.…

前端解決跨域問題的8種方案

2019獨角獸企業重金招聘Python工程師標準>>> 1.同源策略如下&#xff1a; URL說明是否允許通信http://www.a.com/a.js http://www.a.com/b.js同一域名下允許http://www.a.com/lab/a.js http://www.a.com/script/b.js同一域名下不同文件夾允許http://www.a.com:8000/…

k歌的錄音伴奏合成技術如何實現_K歌神器,用唱吧麥克風攀登天籟高峰

自從喜歡上了手機K歌&#xff0c;經常會上傳一些自己的作品&#xff0c;起初無論音質如何都是樂在其中&#xff0c;可時間久了發現回放效果確實不如那榜單上的高手&#xff0c;究其原因想到了麥克風&#xff0c;網上一搜果然有各種K歌輔助工具&#xff0c;多番對比之下&#xf…

淺談內存開辟問題和Block內存問題

我們知道&#xff0c;內存分為棧&#xff0c;堆&#xff0c;塊。 棧中的內存由系統自己釋放&#xff0c;堆是存對象初始化的地方&#xff0c;塊是CPU與內存連接的緩沖器&#xff0c;運行速度比內存快&#xff0c;比CPU慢。 例如&#xff0c;我們NSMutableArray *array [NSMuta…

vue render函數_Vue原理解析(一):Vue到底是什么?

Vue&#xff0c;現在前端的當紅炸子雞&#xff0c;隨著熱度指數上升&#xff0c;實在是有必要從源碼的角度&#xff0c;對它功能的實現原理一窺究竟。個人覺得看源碼主要是看兩樣東西&#xff0c;從宏觀上來說是它的設計思想和實現原理&#xff1b;微觀上來說就是編程技巧&…

scrapy爬蟲-setting.py

# Obey robots.txt rulesROBOTSTXT_OBEY False  不遵從網站的robots.txt法則 # See also autothrottle settings and docsDOWNLOAD_DELAY 3  每次下載延遲3秒&#xff0c;防止造成網站攻擊 # Override the default request headers:DEFAULT_REQUEST_HEADERS { Accept:…

android點擊左上角劃出,使用Android中的Path和RectF在左上角右上角左下角繪制圓角...

有一個Path#addRoundRect()重載,它接受一個包含八個值的float數組,其中我們可以為四個角中的每一個指定x和y半徑.這些值為[x,y]對,從左上角開始,順時針繞其余部分.對于我們想要舍入的那些角,我們將該對的兩個值都設置為半徑值,并將它們保留為零,而不是那些.作為一個說明性示例,…

Nodejs微信開發

因為使用了Bot Framework開發了一個小功能&#xff0c;它目前支持了Skype\Teams\Slack等&#xff0c;但在國內來講&#xff0c;微信還是一個比較流行的軟件&#xff0c;所以需要接上微信 原來開發Bot的時候使用的是.Net開發的&#xff0c;這次我決定使用Nodejs開發一個簡單的后…

性別有什么用_為啥不讓男孩玩布娃娃?別讓你的“性別偏見”,給孩子的人生設限...

在養育孩子的過程中&#xff0c;父母總是會犯許多錯誤&#xff0c;更是有一些錯誤會直接使孩子毀掉一生&#xff0c;而性別偏見正是很多家長都會去犯的錯誤&#xff0c;對男孩和女孩有著刻板印象&#xff0c;也正是因為這一點使孩子的潛力和天賦被壓制。前幾天我帶著孩子去逛商…

android的時間代碼怎么寫,Android 日期和時間的使用實例詳解

Android 日期和時間的使用日期和時間的使用&#xff1b;1&#xff1a;彈出框TimePickerDialog,DatePickerDialog2&#xff1a;組件TimePicker,DatePickerTimePickerDialog的使用&#xff1a;通過點擊button顯示圖一&#xff0c;然后用戶可以設置時間DatePickerDialog的使用只需…