演算法題 翻撲克

2022-05-26 05:54:08 字數 897 閱讀 4513

我手中有一堆撲克牌, 但是觀眾不知道它的順序。

1、第一步, 我從牌頂拿出一張牌, 放到桌子上。

2、第二步, 我從牌頂再拿一張牌, 放在手上牌的底部。

3、第三步, 重複第一步、第二步的操作, 直到我手中所有的牌都放到了桌子上。

最後, 觀眾可以看到桌子上牌的順序是:(牌底部)1,2,3,4,5,6,7,8,9,10,11,12,13(牌頂部)

請問, 我剛開始拿在手裡的牌的順序是什麼?

解題思路:反向操作

1. 耐心的畫出如果手上的牌是1,2,3,4,5,6,7的話,到桌子上是1,3,5,7,4,2,6的過程

2. 然後如果能構建逆向序列,則是正確的反操作

#include #include 

using

namespace

std;

/*c.push_back(num) 在末尾增加乙個元素。

c.pop_back() 刪除末尾的元素。

c.push_front(num) 在開始位置增加乙個元素。

c.pop_front() 刪除第乙個元素。

*/void printlist(lista1)

return;}

list

getorigin(list&desk)

while(!desk.empty())

return

ret;

}int

main()

;int arr = ;

list

desk;

desk.assign(arr,arr+13

); list

r =getorigin(desk);

printlist(r);

}

雜題 翻硬幣

問題 a 翻硬幣 時間限制 1 sec 記憶體限制 128 mb 題目描述 有乙個n行n列的棋盤,每個格仔上都有乙個硬幣,且n為偶數。每個硬幣要麼是正面朝上,要麼是反面朝上。每次操作你可以選定乙個格仔 x,y 然後將第x行和第y列的所有硬幣都翻面。求將所有硬幣都變成同乙個面最少需要的運算元。輸入 第...

撲克洗牌演算法

最近看到了遇到面試題,內容是以最快的方法將一副撲克牌重洗?覺得挺有意思,總結了三種方法,下面的的 是用js,呵呵,下面是 functionshuffle 洗牌方法1 this.shuffle1 function returnarr3 最簡單粗暴的一種方法 this.shuffle2 function...

撲克洗牌演算法

card list for i in range 1 55 card list copy.deepcopy card list 為保證原資料不被改變,對原列表進行深拷貝乙份 for i in range 1 54 index random.randint i,54 card list i 1 car...