①算法之队列解QQ密码
2015-05-09 14:30
274 查看
本应该排序是应该算法最先学的,不过既然是记录我就只记录自己难点的地方了。算法书籍很多,不过我不喜欢经典,经典之所以成为经典,是需要多看几遍的,不过《啊哈算法》这本书还是适合入门小菜鸟学的。我也是小菜鸟。
算法大部分是C写的,对于自己一直在用java写程序员的人,倒是有点不习惯,书中的是用C写的,我就用java自己再写一遍呗,深刻理解一下。
内容来自 《啊哈算法》
题目:
新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~) ,小哼向小哈询问 QQ号,小哈当然不会直接告诉小哼啦,原因嘛你懂的。所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第 1个数删除,紧接着将第 2 个数放到这串数的末尾,再将第 3 个数删除并将第 4 个数放到这串数的末尾,再将第 5 个数删除……直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是小哈的
QQ啦。 现在你来帮帮小哼吧。 小哈给小哼加密过的一串数是 “6 3 1 7 5 8 9 2 4” 。
解题思路:不用想数组是肯定有了,首先在算法习惯设计头和尾进行标记,分别是head 和tail。删除即是在首+1 交换即是个尾交换 尾+1 首也+1 直到首>=尾结束循环
算法实现:
算法大部分是C写的,对于自己一直在用java写程序员的人,倒是有点不习惯,书中的是用C写的,我就用java自己再写一遍呗,深刻理解一下。
内容来自 《啊哈算法》
题目:
新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~) ,小哼向小哈询问 QQ号,小哈当然不会直接告诉小哼啦,原因嘛你懂的。所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第 1个数删除,紧接着将第 2 个数放到这串数的末尾,再将第 3 个数删除并将第 4 个数放到这串数的末尾,再将第 5 个数删除……直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是小哈的
QQ啦。 现在你来帮帮小哼吧。 小哈给小哼加密过的一串数是 “6 3 1 7 5 8 9 2 4” 。
解题思路:不用想数组是肯定有了,首先在算法习惯设计头和尾进行标记,分别是head 和tail。删除即是在首+1 交换即是个尾交换 尾+1 首也+1 直到首>=尾结束循环
算法实现:
package queue; public class QueueDemo { public static void main(String[] args) { int q[] = new int[23]; // 6 1 5 9 4 7 2 8 3 q[0] = 0; q[1] = 6; q[2] = 3; q[3] = 1; q[4] = 7; q[5] = 5; q[6] = 8; q[7] = 9; q[8] = 2; q[9] = 4; int head, tail, i; // 初始化队列 head = 1; tail = 10; while (head < tail) {// 当队列不为空的时候执行循环 System.out.println(q[head]); head++; q[tail] = q[head]; tail++; head++; } for (int j = head; j < tail; j++) { System.out.println(q[j]); } } }
相关文章推荐
- 【坐在马桶上看算法】算法4:队列——解密QQ号
- 【坐在马桶上看算法】算法4:队列——解密QQ号
- 【啊哈!算法】算法4:解密QQ号——队列
- 队列的结构体封装实现(啊哈算法版,以解密QQ号为例)
- 坐在马桶上学算法@队列——解密QQ号
- 【坐在马桶上看算法】算法4:队列——解密QQ号
- 【坐在马桶上看算法】算法4:队列——解密QQ号--作者:ahalei
- 【坐在马桶上看算法】算法4:队列——解密QQ号 推荐
- 【坐在马桶上看算法】算法4:队列——解密QQ号
- 【啊哈!算法】算法4:队列——解密QQ号
- 【算法】解密 QQ 号——使用队列的方法
- 【坐在马桶上看算法】算法4:队列――解密QQ号
- 【一周一算法】算法4:解密QQ号——队列
- 一步一步写算法(之线性队列)
- 堆-实现优先级队列算法
- 关于QQ密码潜伏者的使用
- JavaScript中数据结构与算法(二):队列
- 算法复习(6)链表实现的队列
- hdu2544 最短路 Dijstra算法堆优化,Bellman-Ford,Bellman-Ford队列优化
- 螺旋队列算法分析