摘要: 题意是 一种玩具的匹配,一个玩具由一对绝对值相同的数字构成,一个玩具里面可以塞体积小于他的一个或多个玩具。题目要求判断某个组合方式是否合理,比如-3 -1 1 3意味着在一个体积为3的玩具里放一个体积为1的玩具 ,合理, 如果 为 -3 -2 -1 2 1 3 或者 -3 -3 3 3,则不合理,前者是对应玩具没有正确配对,后者因内部玩具体积过大所以不合理。我先用一个模拟栈判断序列式否合理,若合理,则进行下一步体积的判断。对于一个玩具,要考虑他内部的玩具体积是否合理,可以将玩具根据位置设定等级,等级0表示最外层,以此类推,然后进行判断的时候,只要考虑计算他右侧直到遇到等级和他相同或等级小于他的 阅读全文
posted @ 2013-05-04 19:05 Ink_syk 阅读(154) 评论(0) 推荐(0) 编辑
摘要: DFS;判断平衡;平衡是指各个子节点都需要平衡,然后若成立则YES 不成立则NO;递归的输入然后直接判断即可。若左子树的重量未确定,则向左递归;若右子树未确定,则向右递归;直到底层判断节点是否平衡,然后向上返回整个的重量,层层回溯,然后判断 相应层是否平衡。#include #include #include #include #include #include #include using namespace std; bool flag; int dfs() { int a, l1, b, l2; scanf("%d%d%d%d",&a,&l1,& 阅读全文
posted @ 2013-04-28 23:46 Ink_syk 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 纯模拟题 用vector型的vector模拟,我用了一个p数组适当优化了效率,用p数组记录对应编号牌的位置;题目大意:在早期人工智慧的領域中常常會用到機器人,在這個問題中有一支機器手臂接受指令來搬動積木,而你的任務就是輸出最後積木的情形。一開始在一平坦的桌面上有n塊積木(編號從0到n-1)0號積木放在0號位置上,1號積木放在1號位置上,依此類推。機器手臂有以下幾種合法搬積木的方式(a和b是積木的編號):move a onto b在將a搬到b上之前,先將a和b上的積木放回原來的位置(例如:1就放回1的最開始位罝)move a over b在將a搬到b所在的那堆積木之上之前,先將a上的積木放回原來 阅读全文
posted @ 2013-04-28 22:59 Ink_syk 阅读(93) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include #include #include #include using namespace std; const int MAXN=25; bool a[MAXN]; int main() { int n, i, j, p, q,k, m, sum; while(scanf("%d%d%d",&n,&k,&m)!=EOF) { if(n==0&&k==0&&m==0) break; sum=0; memset(a,0,sizeof(a)); ... 阅读全文
posted @ 2013-04-28 20:50 Ink_syk 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 栈的超级水题 直接模拟#include #include #include using namespace std; const int MAXN=150; char s[MAXN], stack[MAXN]; int main() { int t, i, j, top; scanf("%d%*c",&t); while(t--) { gets(s); top=-1; for(i=0; i=0) { if(stack[top]=='('&&s[i]==')'|... 阅读全文
posted @ 2013-04-28 20:44 Ink_syk 阅读(69) 评论(0) 推荐(0) 编辑