
算法竞赛入门经典 6数据结构基础
GrimCake
这个作者很懒,什么都没留下…
展开
-
UVa-127 "Accordian" Patience(栈+模拟链表)
题目大意:给出52张牌(52堆),从左到右,如果一张牌和他左边第一张牌或左边第三张牌匹配(匹配的含义是点数或者花色相同),就把它移动到左边第一张或第三张上面,如果同时匹配则移动到左边第三张上面,这张牌可以一直移动一直到无法匹配为止。如果有一堆牌移空了,则把后面的堆往前挪填补这个位置。最后输出牌的堆数和每堆牌的牌数。 #include #include #include using namespa原创 2017-08-28 17:46:24 · 410 阅读 · 0 评论 -
UVa-101 The Blocks Problem(栈模拟)
题意:给出n个数字(0到n-1),有四种操作: move a onto b: 把a上的数字回到初始位置,把b上的数字回到初始位置,把a移动到b上 move a over b:把a上的数字回到初始位置,把a移动到b上 move a onto b:把b上的数字回到初始位置,把a和a上的数字一起移动到b上,a和a上的数字顺序不变 move a over b:把a和a上的数字一起移动到b上最顶层原创 2017-08-28 23:26:25 · 377 阅读 · 0 评论 -
UVa-133 The Dole Queue(约瑟夫环)
题意:為了縮短領救濟品的隊伍,NNGLRP決定了以下策略:每天所有來申請救濟品的人會被放在一個大圓圈,面朝裡面。選定一個人為編號 1 號,其他的就從那個人開始逆時針開始編號直到 N。一個官員一開始逆時針數,數 k 個申請者,然後另一個官員第 N 個始順時針方向數 m 個申請者,這兩個人就被送去再教育。如果兩個官員數的是同一個人,那個人則被送去從政,然後2個官員再在剩下的人裡面繼續選直到沒人剩下來,原创 2017-08-29 12:08:34 · 388 阅读 · 0 评论 -
UVa-10152 ShellSort(模拟)
#include #include #include using namespace std; char arr[210][85]; char aim[210][85]; int T, n, i, j; int main(){ scanf("%d", &T); while(T--){ scanf("%d", &n); getchar(); for(i=0;i<n;i++) /*原创 2017-08-29 21:39:20 · 379 阅读 · 0 评论 -
UVa-673 Parentheses Balance(栈模拟)
简单括号匹配问题 #include #include #include #include using namespace std; stack st; char arr[130]; int main(){ int T; cin>>T; getchar(); while(T--){ while(st.size()) st.pop(); gets(arr); int len原创 2017-08-29 22:12:01 · 419 阅读 · 0 评论 -
UVa-657 The die is cast(dfs嵌套)
题意:就是找每一个*区域中有多少个X区域,相连的条件是有公共边,公共点不算 分析:用两次dfs,dfs1用来搜索*区域,并把每一个*变为 . , 在这个过程中如果碰到X,则执行dfs2,用来搜索与该X相连的其他X,并且把X变为* 这道题有一个细节就是,在dfs1中,必须先搜索X,在搜索*,看这样一个例子: 6 6原创 2017-08-31 17:10:15 · 320 阅读 · 0 评论