题目要求: 要求不能使用乘除法,for/while/if/else/switch/case等关键字以及条件判断语句(A?B:C). 参考资料:剑指offer第46题 题目分析: 方法1:利用类的静态成员变量,定义一次之后该类的所有对象都共享该静态成员变量.再利用构造函数实现n次递加即可: 方法2:利用函数指针: 方法3:利用虚函数和动态联编(虚函数和动态联编介绍:http://blog.csdn.net/qlping2007/article/details/2177880). 代码实现: 方法1…
题目链接:http://www.codeforces.com/problemset/problem/118/A题意:字符串转换……C++代码: #include <string> #include <iostream> using namespace std; string s; bool _in(char c, string s) { ; i < s.length(); i ++) if (c == s[i]) return true; return false; } in…
题目链接:http://www.codeforces.com/problemset/problem/122/A题意:判断一个数是否能被一个lucky number整除,一个lucky number是一个只包含4或7的数.C++代码: #include <cstdio> ] = {, , , , , , , , , , , , , }; bool check(int x) { ; i < ; i ++) ) return true; return false; } int main() {…
题目要求: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1.2.3.4.5是某栈的压栈序列,序列4.5.3.2.1是该压栈序列对应的一个弹出序列,单4.3.5.1.2就不可能是该压栈序列的弹出序列. 参考资料:剑指offer第22题. 题目分析: 如果下一个弹出的数字刚好是栈顶数字,那么直接弹出.如果下个弹出的数字不在栈顶,我们把压栈序列中还没有入栈的数字艳茹辅助栈,知道把下一个需要弹出的数字压入栈顶为止.如果所有的数…
Integer to Roman 问题简介:将输入的int类型数字转化为罗马数字 问题详解:罗马数字由七个不同的符号表示:I,V,X,L,C,D和M 符号-数值 I - 1 V - 5 X -10 L - 50 C - 100 D - 500 M - 1000 例如,2用罗马数字写成II,只有两个I加在一起,十二写为XII,解释为X + II, 二十七写成XXVII,即XX + V + II, 罗马数字通常从左到右从最大到最小,但是,四个数字不是IIII,相反,第四个写为IV,因为一个在五个之前…
程序逻辑问题分值:20 来源: 实验吧 难度:中 参与人数:6909人 Get Flag:1993人 答题人数:2070人 解题通过率:96% 绕过 解题链接: http://ctf5.shiyanbar.com/web/5/index.php 原题链接:http://www.shiyanbar.com/ctf/62 [解题报告] 这是我入门Web开始写的第十二道题,这道题我们首先先查看它的源代码,发现它源代码里面有个隐藏的txt文件,我们点击查看一下隐藏的源代码,很显然,这是一道和php有关的…
题目十二:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方. !/usr/bin/env python3 # -*- coding: utf-8 -*- """ 题目十二:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.…
题目要求: 输入一个链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针. 参考资料:剑指offer第15题 题目分析: 1.两个指针,第一个先走k步,然后两个指针同时走,直到第一个走到尾指针,此时第二个指针即为所求: 2.令函数原型为:ListNode *findKthToTail(ListNode *head,unsigned int k); 特殊情况: i). head为空指针: ii). head为头结点的链表的结点总数小于k: iii).k=0. 3.注意此处为倒数第0…
题目要求: 输入数字n,按顺序输出从1到最大的n位10进制数. 例如,输入3,则输出1.2.3....999(最大的3位数). 参考资料:剑指offer第12题. 题目分析: 如果我们在数字前面补0的话,就会发现n位所有十进制数其实就是n个从0到9的全排列.也就是说,我们把数字的每一位都从0到9排列一遍,就得到了所有的十进制数.只是我们打印的时候,数字排在前面的0我们不打印出来而已. 代码实现: #include <iostream> using namespace std; ; void P…
题目要求: 给定链表的头指针和一个结点指针,在O(1)时间删除该结点. 参考资料:剑指offer第13题. 题目分析: 有几种情况: 1.删除的结点是头结点,且链表不止一个结点: 2.删除的结点是头结点,且链表只有一个结点: 3.删除的结点是尾结点,且链表不止一个结点: 4.删除的结点不是头也不是尾结点: 对于第四种情况(普遍情况),见如下图分析: 对于第三种情况,时间复杂度为O(n).其他情况时间复杂度为O(1).则总的平均复杂度为[(n-1)*O(1)+O(n)]/n = O(1). 代码实…