我手中有一堆撲克牌, 但是觀眾不知道它的順序。
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 #includeusing
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...