经典算法题目
算法竞赛入门经典 题单
算法竞赛入门经典题单以下是算法竞赛入门经典的一些题目:1. 两数之和2. 三数之和3. 最长回文子串4. 数组中去除重复项5. 盛最多水的容器6. 最长递增子序列7. 买卖股票的最佳时机8. 翻转二叉树9. 合并两个有序链表10. 合并K个升序链表11. 二分查找12. 寻找旋转排序数组中的最小值13. 矩阵中的路径14. 三数之积最大值15. 盛最多水的容器 II16. 最长回文子串 II17. 最长回文子串 III18. 最长公共子序列19. 二分查找的变种20. 二分搜索树中的第K小元素21. 二叉树的最大深度22. 二叉树的层序遍历23. 二叉树的镜像24. 二叉树中每个节点的值都不重复的子树个数25. 二叉树的叶子节点之和26. 二叉树中所有的路径长度之和27. 斐波那契数列28. 快慢指针解决链表问题29. 单链表中的插入节点问题30. 单链表中的删除节点问题31. 判断链表中是否有环32. 在链表中查找第k个节点33. 反转链表34. 对链表进行排序35. 约瑟夫环问题36. 括号匹配问题37. 二进制中1的个数问题38. 寻找数组中两个数,使得它们的和等于一个给定的值39. 寻找数组中最大的k个数40. 求一个数组中所有元素的和41. 求一个数组中的第k大元素42. 寻找数组中只出现一次的数字(经典的异或解法)43. 二分查找的变种(数组中连续子数组的长度)44. 在二叉搜索树中插入节点问题(先序、中序、后序遍历)45. 在二叉搜索树中查找最大值和最小值节点问题46. 二叉搜索树中查找是否存在某个节点的问题47. 二叉搜索树转换为排序的双向链表问题(中序遍历)。
算法练习题及答案
算法练习题及答案算法练习题及答案随着计算机科学的发展,算法成为了计算机科学的核心内容之一。
算法是一种解决问题的方法和步骤,它可以将复杂的问题简化为一系列简单的操作。
为了提高算法设计和分析的能力,许多学生和程序员经常进行算法练习。
在这篇文章中,我将给出一些常见的算法练习题及其答案,希望能对读者有所帮助。
1. 反转字符串题目:给定一个字符串,将其反转并返回。
解答:可以使用两个指针,一个指向字符串的开头,一个指向字符串的末尾。
然后交换两个指针指向的字符,然后分别向中间靠拢,直到两个指针相遇。
2. 判断回文数题目:给定一个整数,判断它是否是回文数。
回文数是指正序和倒序读都一样的整数。
解答:可以将整数转换为字符串,然后使用反转字符串的方法判断是否相等。
另一种方法是将整数反转后与原来的整数进行比较。
3. 寻找两个有序数组的中位数题目:给定两个有序数组,找出这两个数组合并后的中位数。
要求时间复杂度为O(log(m+n))。
解答:可以使用二分查找的思想。
首先将两个数组合并成一个有序数组,然后找到中位数的位置。
如果数组长度为奇数,中位数就是中间的元素;如果数组长度为偶数,中位数就是中间两个元素的平均值。
4. 搜索旋转排序数组题目:给定一个按照升序排列的整数数组,经过旋转后的数组,搜索一个给定的目标值。
如果目标值存在于数组中,则返回它的索引,否则返回-1。
解答:可以使用二分查找的思想。
首先找到数组的中间元素,然后判断中间元素与目标值的关系。
如果中间元素等于目标值,直接返回索引;如果中间元素小于目标值,说明目标值在右半部分,继续在右半部分进行二分查找;如果中间元素大于目标值,说明目标值在左半部分,继续在左半部分进行二分查找。
5. 最长公共前缀题目:给定一个字符串数组,找到这些字符串的最长公共前缀。
解答:可以将第一个字符串作为初始的最长公共前缀,然后逐个比较后面的字符串与最长公共前缀的相同部分。
如果相同部分为空,则返回空;如果相同部分不为空,则更新最长公共前缀。
c语言算法100例
c语言算法100例以下是一些经典的C语言算法题目,总共提供100个例子供你练习和学习:1.编写一个程序,计算并输出斐波那契数列的前20个数。
2.编写一个程序,判断一个数是否为素数。
3.编写一个程序,计算并输出一个数的阶乘。
4.编写一个程序,实现两个数的交换(不使用第三个变量)。
5.编写一个程序,找出一个数组中的最大值。
6.编写一个程序,将一个字符串反转。
7.编写一个程序,判断一个字符串是否为回文字符串。
8.编写一个程序,实现冒泡排序算法对一个数组进行排序。
9.编写一个程序,实现二分查找算法在一个有序数组中查找指定的元素。
10.编写一个程序,计算并输出斐波那契数列的第n个数。
11.编写一个程序,将一个二维数组顺时针旋转90度。
12.编写一个程序,计算并输出一个数的平方根。
13.编写一个程序,判断一个字符串中是否包含重复字符。
14.编写一个程序,实现插入排序算法对一个数组进行排序。
15.编写一个程序,将一个有序数组合并为一个有序数组。
16.编写一个程序,判断一个数是否为完全数(即所有因子之和等于该数本身)。
17.编写一个程序,计算并输出一个数的倒数。
18.编写一个程序,判断一个字符串是否是另一个字符串的子串。
19.编写一个程序,实现选择排序算法对一个数组进行排序。
20.编写一个程序,计算并输出两个数的最大公约数。
21.编写一个程序,实现快速排序算法对一个数组进行排序。
22.编写一个程序,将一个字符串中的所有空格替换为指定的字符。
23.编写一个程序,判断一个数是否是回文数。
24.编写一个程序,计算并输出两个数的最小公倍数。
25.编写一个程序,实现归并排序算法对一个数组进行排序。
26.编写一个程序,判断一个字符串是否是有效的括号串。
27.编写一个程序,计算并输出一个数的立方根。
28.编写一个程序,实现堆排序算法对一个数组进行排序。
29.编写一个程序,判断一个数是否是质数。
30.编写一个程序,计算并输出一个数的二进制表示。
js算法面试经典100题
js算法面试经典100题以下是面试中常见的100个经典算法问题,适用于JavaScript:1. 两数之和2. 反转字符串3. 验证回文串4. 整数反转5. 最长公共前缀6. 合并两个有序数组7. 有效的括号8. 删除排序数组中的重复项9. 删除链表中的节点10. 实现 strStr()11. 替换空格12. 二叉树的最大深度13. 对称二叉树14. 二叉树的层次遍历15. 二叉搜索树的最近公共祖先16. 删除链表的倒数第N个节点17. 旋转数组18. 合并两个有序链表19. 链表的中间节点20. 最大子序和21. 阶乘尾部的零22. 爬楼梯23. 二叉树的前序遍历24. 杨辉三角25. 有效的数独26. 反转链表27. 验证二叉搜索树28. 实现Trie29. 最长有效括号30. 合并区间31. 两两交换链表中的节点32. 下一个排列33. 逆波兰表达式求值34. 最大矩形35. 字符串相乘36. 删除链表中的重复元素37. 螺旋矩阵38. 使用队列实现栈39. 最长连续序列40. 交错字符串41. 单词拆分42. 最后一个单词的长度43. 二叉树的右视图44. 跳跃游戏45. 翻转二叉树46. 字母异位词分组47. 复原IP地址48. 最小覆盖子串49. 丑数50. 栈的压入弹出序列51. 二叉树中和为某一值的路径52. 二叉搜索树的后序遍历序列53. 二进制求和54. 分隔链表55. 不同路径56. 最小路径和57. 字符串转换整数58. 搜索二维矩阵59. 环形链表60. 路径总和61. 删除链表的节点62. 最长上升子序列63. 最大子数组乘积64. 排序链表的合并65. 在排序数组中查找元素的第一个和最后一个位置66. 同结构的二叉树67. 乘积最大子数组68. 两个排序数组的中位数69. 合并K个排序链表70. 数组中的逆序对71. 反转链表的前N个节点72. 最大值和最小值的差73. 翻转字符串中的单词74. 前 K 个高频元素75. 分青红蓝球问题76. 回文数77. 括号生成78. 长度最小的子数组79. 根据身高和序号重组队列80. 两数相加81. 数字的英文表示82. 二叉树的锯齿形层次遍历83. 在O(1)时间内删除链表节点84. 用栈实现队列85. 二叉树的层平均值86. 二叉树的右侧视图87. 螺旋矩阵 II88. 颜色分类89. 寻找重复数90. 打家劫舍91. 按序打印92. 找到字符串中所有字母异位词93. 丑数 II94. 外观数列95. 在排序链表中删除重复元素 II96. 两数相除97. 不同的二叉搜索树98. 最长回文子串99. 缺失的第一个正数100. 寻找最大公约数这些问题涵盖了数据结构和算法中的常见题目。
算法练习题——精选推荐
算法练习题1. 斐波那契数列:1 1 2 3 5 8 13 21 …… 求第20个数;2. 今有雉兔同笼,上有三⼗五头,下有九⼗四⾜,问雉兔各⼏何?3. 求1000以内的⽔仙花数4. 求⼀个数的阶乘5. 求多个连续数的阶乘之和6. 如果今天是星期⼆,那么1000天后是星期⼏?⽤户输⼊⼀个天数,计算这个天数后是星期⼏?7. 苹果3元⼀个,鸭梨2元⼀个,桃⼦1元⼀个。
现在想⽤200元买100个⽔果,在控制台中列出所有可能性8. 求任意⼀个⼩于100000的正整数的位数,并逆序打印每⼀位数字⽐如:567,位数是3位,以此打印7 ,6 ,59. 有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
程序分析:请抓住分⼦与分母的变化规律。
10. 有⼀些苹果,每⼈分5个多1个,每⼈分6个多2个,每⼈分7个多3个,⼀共有多少个苹果11. 判断⼀个数字是不是素数12. 利⽤条件运算符的嵌套来完成此题:学习成绩>=90分的同学⽤A表⽰,60-89分之间的⽤B表⽰,60分以下的⽤C表⽰。
1.程序分析:(a>b)?a:b这是条件运算符的基本例⼦。
13. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是⼀个数字。
例如2+22+222+2222+22222(此时共有5个数相加),⼏个数相加由⽤户输⼊(prompt)14. ⼀球从100⽶⾼度⾃由落下,每次落地后反跳回原⾼度的⼀半;再落下,求它在第10次落地时,共经过多少⽶?第10次反弹多⾼?15. 求10000以内的完美数如果⼀个数恰好等于它的约数之和,则称该数位“完美数”。
16. 寻找丑数题⽬:我们把只包含因⼦2、3 和5 的数称作丑数(Ugly Number)。
例如6、8 都是丑数,但14 不是,因为它包含因⼦7。
习惯上我们把1 当做是第⼀个丑数。
求按从⼩到⼤的顺序的第1500 个丑数。
17. 猴⼦吃桃问题:猴⼦第⼀天摘下若⼲个桃⼦,当即吃了⼀半,还不瘾,⼜多吃了⼀个第⼆天早上⼜将剩下的桃⼦吃掉⼀半,⼜多吃了⼀个。
10个节点最短路径算法题
10个节点最短路径算法题最短路径算法是图论中的一种重要算法,用于计算两个节点之间的最短路径。
在以下内容中,将介绍并讨论10个与最短路径算法相关的题目,并给出相关参考内容,以加深对该算法的理解。
1. Dijkstra算法题目:给定一个加权有向图和一个源节点,请找出从源节点到每个其他节点的最短路径。
参考内容:《算法导论》(Introduction to Algorithms)一书中第24章,提供了关于Dijkstra算法原理和实现的详细解释。
2. Bellman-Ford算法题目:给定一个加权有向图和一个源节点,请找出从源节点到每个其他节点的最短路径,其中图中可能存在负权边。
参考内容:《算法导论》第24章,提供了Bellman-Ford算法的详细解释和实现。
3. Floyd-Warshall算法题目:给定一个有向图,请找出任意两个节点之间的最短路径。
参考内容:《算法导论》第25章,提供了Floyd-Warshall算法的详细解释和实现。
4. A*算法题目:给定一个加权有向图、一个源节点和一个目标节点,请找出从源节点到目标节点的最短路径。
参考内容:《人工智能:一种现代方法》(ArtificialIntelligence: A Modern Approach)一书中第3章,提供了A*算法的详细解释和实现。
5. Johnson算法题目:给定一个加权有向图,请找出任意两个节点之间的最短路径,其中图中可能存在负权边。
参考内容:《算法导论》第25章,提供了Johnson算法的详细解释和实现。
6. SPFA算法题目:给定一个加权有向图和一个源节点,请找出从源节点到每个其他节点的最短路径。
参考内容:各种算法教材、博客文章和论文中提供了SPFA算法的详细解释和实现,如《算法导论》第24章。
7. Yen's算法题目:给定一个加权有向图、一个源节点和一个目标节点,请找出从源节点到目标节点的K条最短路径。
参考内容:论文《Finding the K Shortest Loopless Paths in a Network》中提供了Yen's算法的详细解释和实现。
递归经典题目
递归经典题目
递归是一种常用的算法技术,它可以用来解决许多经典问题。
以下是一些经典的递归问题:
1. 斐波那契数列:这是一个经典的递归问题,其中每个数字是前两个数字的和。
例如,斐波那契数列的前几个数字是 0、1、1、2、3、5、8、13、21 等。
2. 阶乘函数:这是一个计算一个数的阶乘的递归函数。
例如,5 的阶乘是 5 4 3 2 1 = 120。
3. 汉诺塔问题:这是一个经典的递归问题,其中有一些盘子需要从一根柱子移动到另一根柱子,每次只能移动一个盘子,并且不能将一个较大的盘子放在较小的盘子上面。
4. 二分搜索:这是一个在排序数组中查找特定元素的递归算法。
它首先将数组分成两半,然后根据目标值与中间元素的比较结果,选择另一半继续搜索。
5. 回溯算法:这是一种通过递归搜索所有可能解的算法,通常用于解决约束满足问题。
例如,排列组合问题、八皇后问题等。
6. 分治算法:这是一种将问题分解为更小的子问题,然后递归地解决这些子问题的算法。
例如,归并排序和快速排序等。
7. 动态规划:这是一种使用递归和备忘录(或称为记忆化)的方法,用于解决具有重叠子问题和最优子结构的问题。
例如,背包问题和最短路径问题等。
这些经典的递归问题涵盖了不同的应用领域和算法类型,可以通过学习和解决这些问题来提高自己的编程和算法技能。
python每日经典算法题5(基础题)+1(较难题)
python每⽇经典算法题5(基础题)+1(较难题)⼀:基础算法题5道1.阿姆斯特朗数如果⼀个n位正整数等于其各位数字的n次⽅之和,则称该数为阿姆斯特朗数。
判断⽤户输⼊的数字是否为阿姆斯特朗数。
(1)题⽬分析:这⾥要先得到该数是多少位的,然后再把每⼀位的数字截取出来,把各位数字的n次⽅之和和该数⼀起判断即可。
(2)算法分析:python中有len()函数可以得到⼀个字符串的长度,因此需要先把⼀个正整数转化为正整数字符串。
然后从⾼位向低位截取(也可以反过来)。
或者⾼效算法利⽤for循环切⽚。
从⾼位到低位:⽤正整数除了10的n次⽅,得到的商就是⾼位的数,余数就是下次循环的数。
从低位到⾼位:⽤正整数除以10,得到的余数就是低位的数,商就是下次循环的数。
for循环:⽤for循环依次得到每⼀位数。
就是可迭代对象依次显⽰。
(3)⽤到的python语法:while循环,for循环,if语句,函数。
(4)博主答题代码:从⾼位到低位:def judge(num):mysum = 0n = len(str(num)) - 1m = n + 1firstNum = numwhile num > 0:quotient = num // (10**n)remainder = num % (10**n)mysum += quotient ** mnum = remaindern -= 1if mysum == firstNum:print('该数是阿姆斯特朗数')else:print('该数不是阿姆斯特朗数')num = int(input('请输⼊⼀个整数:'))judge(num)从低位到⾼位:def judge(num):mysum = 0n = len(str(num)) - 1m = n + 1firstNum = numwhile num > 0:quotient = num // 10remainder = num % 10mysum += remainder ** mnum = quotientn -= 1if mysum == firstNum:print('该数是阿姆斯特朗数')else:print('该数不是阿姆斯特朗数')num = int(input('请输⼊⼀个整数:'))judge(num)(5)⾼效⽅法:for循环:def judge(num):n = len(num)sum = 0for i in num:sum += int(i) ** nif sum == int(num):print('该数是阿姆斯特朗数')else:print('该数不是阿姆斯特朗数')num = input('请输⼊⼀个整数:')judge(num)2.整数数组给定⼀个整数数组,判断是否存在重复元素。
C语言经典算法100例题目
看懂一个程序,分三步:1、流程;2、每个语句的功能;3、试数;小程序:1、尝试编程去解决他;2、看答案;3、修改程序,不同的输出结果;4、照答案去敲;5、调试错误;6、不看答案,自己把答案敲出来;7、实在不会就背会。
周而复始,反复的敲。
【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?==============================================================【程序2】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?==============================================================【程序3】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?==============================================================【程序4】题目:输入某年某月某日,判断这一天是这一年的第几天?==============================================================【程序5】题目:输入三个整数x,y,z,请把这三个数由小到大输出。
==============================================================【程序6】题目:用*号输出字母C的图案。
算法经典必刷题
算法经典必刷题
以下是一些经典的算法必刷题目,供您参考:
1. 两数之和(LeetCode 1):给定一个整数数组 nums 和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
2. 三数之和(LeetCode 498):给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有
满足条件且不重复的三元组。
3. 最长回文子串(LeetCode 5):给定一个字符串 s,找到 s 中最长的回
文子串。
你可以假设 s 的最大长度为 1000。
4. 二分查找(LeetCode 7):给定一个排序数组和一个目标值,在数组中
查找目标值,并返回其索引。
如果目标值不存在于数组中,则返回 -1。
5. 盛最多水的容器(LeetCode 11):给定 n 个非负整数 a1,a2,...,an,每个数代表一个坐标点 (i, ai)。
在坐标内画 n 条垂直线,使得 i 垂直线的两
个端点分别为 (i, ai) 和 (i, 0)。
找出其中的一条线,使得该条线落在这 n 条
垂直线构成的区域内时,它到 x 轴的垂线段区域内的水最多。
6. 合并两个有序链表(LeetCode 20):将两个升序链表合并为一个新的升序链表并返回。
新链表是通过拼接给定的两个链表的所有节点组成的。
这些题目都是经典的算法问题,对于提高算法和数据结构方面的能力非常有帮助。
当然,还有很多其他的经典算法必刷题目,您可以根据自己的实际情况选择题目进行练习。
计算机算法题目
计算机算法题目一、问题描述给定一个长度为n的整数数组nums,判断是否存在两个元素nums[i]和nums[j],使得它们的和等于一个给定的目标值target。
如果存在这样的两个元素,则返回它们的索引,若不存在则返回[-1, -1]。
二、示例示例1:输入: nums = [2, 7, 11, 15], target = 9输出: [0, 1]解释: nums[0] + nums[1] = 2 + 7 = 9,因此返回[0, 1]。
示例2:输入: nums = [3, 2, 4], target = 6输出: [1, 2]解释: nums[1] + nums[2] = 2 + 4 = 6,因此返回[1, 2]。
示例3:输入: nums = [3, 3], target = 6输出: [0, 1]解释: nums[0] + nums[1] = 3 + 3 = 6,因此返回[0, 1]。
三、解题思路为了解决该问题,我们可以使用哈希表来提高查找速度。
我们可以遍历数组中的每个元素,对于当前遍历到的元素nums[i],我们判断目标值减去当前元素的差值target - nums[i]是否存在于哈希表中。
•如果差值存在于哈希表中,说明当前元素和差值的和等于目标值,那么我们可以直接返回这两个元素的索引。
•如果差值不存在于哈希表中,则将当前元素插入哈希表中,继续遍历下一个元素。
通过这种方式,我们可以在遍历数组的过程中,找到满足条件的两个元素并返回其索引。
四、代码实现以下是使用Python语言实现的代码:def twoSum(nums, target):num_dict = {}for i, num in enumerate(nums):if target - num in num_dict:return [num_dict[target - num], i]num_dict[num] = ireturn [-1, -1]五、复杂度分析该算法的时间复杂度为O(n),其中n为数组的长度。
常见的算法题
常见的算法题一、算法的基础知识算法是计算机科学的核心,它是一系列具体解决问题的步骤或指令。
一个算法应该具有明确性、可行性和效率。
常见的算法类型包括排序算法、搜索算法、图算法等。
二、常见的算法题目及解法1. 冒泡排序题目:对一个包含n个整数的数组进行排序。
解法:使用冒泡排序算法,比较相邻的两个数,如果顺序不对则交换它们。
重复执行此过程,直到所有数都排好序。
时间复杂度为O(n^2)。
2. 快速排序题目:对一个包含n个整数的数组进行排序。
解法:使用快速排序算法,选择一个基准元素,将数组分为两部分,小于基准的放在左边,大于等于基准的放在右边。
然后对左右两边的数组重复执行此过程。
时间复杂度为O(nlogn)。
3. 二分查找题目:在一个已排序的数组中查找一个元素。
解法:使用二分查找算法,将数组分为两部分,根据中间元素与目标元素的比较结果,不断缩小搜索范围,直到找到目标元素或确定元素不存在于数组中。
时间复杂度为O(logn)。
4. 深度优先搜索(DFS)题目:从一个节点开始,遍历一个图,找到所有的出边。
解法:使用深度优先搜索算法,从起点开始搜索,访问相邻的节点,直到遍历完所有的节点。
这种方法适用于有向图或无向图。
5. 广度优先搜索(BFS)题目:从一个节点开始,遍历一个图,找到从起点出发的所有路径。
解法:使用广度优先搜索算法,将起点加入队列中,依次取出队列中的节点,访问其相邻的节点,并将未访问过的相邻节点加入队列中。
这种方法适用于有向图或无向图。
6. 最短路径问题题目:在一个加权图中找到从起点到终点的最短路径。
解法:可以使用Dijkstra算法或Bellman-Ford算法来解决最短路径问题。
这两种算法都是通过迭代的方式逐步更新距离信息,最终找到最短路径。
Dijkstra算法适用于稀疏图,Bellman-Ford算法则适用于稠密图。
三、实战演练:编程实现常见算法1. Python实现冒泡排序以下是一个用Python实现冒泡排序的示例代码:```pythondef bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j] # 交换位置return arr```这段代码可以对一个整数数组进行冒泡排序,并返回排序后的结果。
简单算法题目大全
简单算法题目大全
以下是一些简单的算法题目,难度从一颗星到四颗星不等:
1. 一颗星:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
2. 一颗星:打印出所有的四位的四叶玫瑰数,如:1634,即1634=1的四
次方加上6的四次方加上3的四次方加上4的四次方。
3. 两颗星:对于一个有正有负的整数数组,请找出总和最大的连续数列。
4. 三颗星:输出九九乘法表。
5. 三颗星:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
6. 三颗星:打印出五位的五角星数,如:54748,即54748=5的5次方加上4的5次方加上7的5次方加上4的5次方加上8的5次方。
7. 四颗星:斐波那契数列。
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
以上算法题目的解答方法可能有很多种,可以结合自身情况进行尝试解答。
同时建议咨询算法领域资深业内人士获取更专业的指导。
常见算法面试题及答案
常见算法面试题及答案1. 数组中重复的数字题目:在一个长度为n的数组中,存在一个数字出现两次,而其他数字均出现一次,请找出这个重复的数字。
答案:可以使用哈希表来解决这个问题,遍历数组,将每个数字作为键,出现次数作为值,如果出现次数大于1,则该数字就是重复的数字。
2. 旋转数组的最小数字题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
答案:可以使用二分查找法。
首先判断数组是否有序,如果有序,则直接返回第一个元素。
如果无序,找到中间元素,比较中间元素和两端元素,如果中间元素小于右边元素,则左边有序,否则右边有序。
在有序的一侧使用二分查找法找到最小值。
3. 斐波那契数列题目:斐波那契数列的第n项是多少?答案:可以使用递归、动态规划或者公式法来解决。
递归方法简单但效率低,动态规划通过构建一个数组来存储已计算的值,公式法通过矩阵快速幂来计算。
4. 二叉树的镜像题目:请完成一个函数,实现二叉树的镜像。
答案:可以使用递归或者迭代的方法。
递归方法是遍历到每个节点,交换其左右子节点。
迭代方法可以使用栈来模拟递归过程。
5. 寻找数组中第k大的元素题目:在未排序的数组中找到第k大的元素。
答案:可以使用快速排序的分区算法,每次分区后找到第k大的元素。
也可以使用大顶堆,将数组元素全部加入堆中,然后重复k-1次弹出堆顶元素。
6. 合并两个有序链表题目:将两个有序链表合并为一个新的有序链表并返回。
答案:可以使用双指针的方法,分别指向两个链表的当前节点,比较节点值,将较小的节点添加到新链表中,然后移动指针,直到一个链表为空。
7. 字符串的排列题目:输入一个字符串,打印出该字符串中字符的所有排列。
答案:可以使用回溯法。
创建一个递归函数,每次选择一个字符作为排列的第一个字符,然后递归排列剩下的字符。
8. 两个栈实现队列题目:用两个栈实现一个队列。
队列的声明是先入先出,栈是后入先出。
常见的算法面试题
常见的算法面试题1、题目:二分查找问题描述:给定一个排序数组和一个目标值,在数组中查找目标值,并返回其索引。
如果目标值不存在于数组中,则返回 -1。
示例:输入: nums = [1,3,5,7], target = 3输出: 2解释: 目标值3在排序数组中的索引为2。
解题思路:二分查找是一种在有序数组中查找特定元素的搜索算法。
搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果目标元素大于或小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且同样从中间元素开始比较。
如果在某一步骤数组为空,则代表找不到。
这种搜索算法每一次比较都使搜索范围缩小一半。
时间复杂度:O(log n),其中 n 是数组的长度。
空间复杂度:O(1)。
2、题目:归并排序问题描述:归并排序是一种采用分治法的排序算法。
它将一个数组分成两个子数组,分别对子数组进行排序,然后将有序的子数组合并成一个有序的数组。
示例:输入: nums = [3,2,1,6,5,4]输出: [1,2,3,4,5,6]解释: 将数组分成 [3,2,1] 和 [6,5,4],分别对两个子数组进行排序,得到[1,2,3] 和 [4,5,6],最后将两个有序的子数组合并得到 [1,2,3,4,5,6]。
解题思路:归并排序的基本步骤如下:将数组不断拆分成更小的子数组,直到每个子数组只包含一个元素,然后将这些子数组合并成一个有序的数组。
在合并的过程中,使用一个辅助数组来记录每个子数组的起始位置和长度,以便于后续的合并操作。
合并两个有序的子数组合并成一个有序的数组时,需要比较两个子数组中的元素大小,将较小的元素放入新数组中。
重复步骤 2 和步骤 3,直到整个数组有序为止。
时间复杂度:O(n log n),其中 n 是数组的长度。
归并排序的时间复杂度主要来自于拆分和合并两个过程,每次拆分的时间复杂度为 O(log n),合并的时间复杂度为 O(n)。
五经算术经典题目
五经算术经典题目
1.《周髀算经》:一堆鸡翁值钱三十,一雌三钱,买一百只鸡,钱数几何?
2. 《孙子算经》:有一疑者持重一斤铜钱问之曰:“我手中此钱宜轻宜重?”其人不能决。
疑者再取一钱与之,问曰:“此钱比重宜轻宜重?”其人曰:“宜轻。
”疑者曰:“此钱亦重一文,余之钱皆然,余之钱几何?”
3. 《海岛算经》:有船载米粮若干,每日进三斗,三日余一斗;每日退二斗,五日欠一斗。
问船中米粮几何?
4. 《张邱建算经》:田有三十三亩,三分耕之,七分休之,减去杂物,得粟三百斛,问一亩耕几何?
5. 《数书九章》:一匹马、一队人,三人一骑,五人一骑,七人一骑,各成一列,问几何人,几何马?
6. 《孟子算经》:有一竿,上有五瓢,每瓢重一两半,下有一瓢,重四两半。
问此竿几何?
7. 《算法统宗》:三人同行七十五里,各乘船一只,船一人载十斛,每斛值银五十;问船价几何?
8. 《九章算术》:一珠重一两,真珠比假珠重三倍,共有真、假两珠若干,重一斤八两;问真、假各几何?
9. 《周髀算经》:商人进货买铁三百斤,五日卖之,得钱七百五十文,每日进货三斤,每斤得利一文五钱。
问进价每斤几何?
10. 《孙子算经》:兵二十余万,以一级抚之,收其钱二十万,
一日抚费三千,一日所用钱三千,抚一月几何?。
递归算法经典题目
递归算法经典题目递归算法是一种非常强大的编程技术,它能够解决一些复杂的问题,将它们分解为更小的子问题。
以下是一些经典的递归算法题目:1. 斐波那契数列:这是一个经典的递归问题,斐波那契数列中的每个数字都是前两个数字的和。
例如,0, 1, 1, 2, 3, 5, 8, 13, 21... 编写一个函数来计算斐波那契数列中的第n个数字。
2. 阶乘:阶乘是一个数的所有小于及等于该数的正整数的乘积。
例如,5的阶乘(记作5!)是5 4 3 2 1 = 120。
编写一个函数来计算一个数的阶乘。
3. 二分搜索:二分搜索是一种在排序数组中查找特定元素的搜索算法。
编写一个函数,该函数使用二分搜索在给定的排序数组中查找特定的元素。
4. 回溯算法:回溯算法用于解决决策问题,例如八皇后问题。
在这个问题中,我们需要在一个8x8棋盘上放置8个皇后,使得任何两个皇后都不在同一行、同一列或同一对角线上。
编写一个使用回溯算法解决八皇后问题的函数。
5. 合并排序:合并排序是一种分治算法,它将一个大的列表分成两个较小的子列表,对子列表进行排序,然后将它们合并成一个已排序的列表。
编写一个使用递归实现合并排序的函数。
6. 快速排序:快速排序也是一种分治算法,它选择一个"基准"元素,然后将所有比基准小的元素放在其左边,所有比基准大的元素放在其右边。
然后对左右两个子列表进行快速排序。
编写一个使用递归实现快速排序的函数。
7. 深度优先搜索(DFS):这是一种用于遍历或搜索树或图的算法。
这个算法会尽可能深地搜索树的分支。
当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。
这一过程一直进行到已发现从源节点可达的所有节点为止。
如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。
编写一个使用递归实现深度优先搜索的函数。
这些题目都可以帮助你理解和应用递归算法。
关于加密算法的题目
关于加密算法的题目
以下是一些关于加密算法的题目:
1. 凯撒密码是一种基于字符替换的对称式加密方法,通过对26个英文字母循环移位和替换来进行编码。
假设待加密的消息为"UNIVERSITY",密钥k 为5,试给出加密后的密文。
2. 对给定的二进制明文信息“....”进行两次加密。
第一次,采用8位分组异或算法,用密钥“”对明文进行加密运算。
第二次,采用“1→4(读作:位置l的数据移到位置4,以下类推),2→8,3→1,4→5,5→7,6→2,7→6,8→3”对第一次加密后的密文进行8位分组换位加密运算。
请写出两次加密的密文。
3. 给定素数p=11,q=13,试生成一对RSA密钥。
即用RSA算法计算:密钥的模n和欧拉函数φ(n)的值。
设选择公钥e=7,计算私钥d的值。
这些题目涵盖了对称加密、非对称加密以及RSA算法等知识点,有助于深入理解加密算法的工作原理和应用。
算法经典例题及答案.doc
第三步,判断"NO 是否成立,输入a,6,c-11x 〉10 3、根据・尸,x=10 设计算法并画出程序框图,求输入才的值,输出y 的值.[解析] 第一步:14K10算法如下: 输入x.第二步:如果x>10,那么y= —11;如果才=]0,那么y=0;如果次10,那么y=4;[注意] 算法专题训练1、设计一个程序框图,使之能判断任意输入的整数X 是奇数还是偶数. [解析]程序椎图如下.除以2的余数/输出”是奇数7施出七是偶数7 2、已知关于*的一元二次方程 彩+新+《=0(编制),设计一个算法,判断方程是否有实数根.写出算法步骤,并画出程序框图.[分析]根据3=力=若一4%的符号来判断,因此要用条件结构. [解析]算法如下:第一步,输入缶b, c .第二步,计算3 =廿一4眼・ 若成立,输出方程有实数根;若不成立,输出方程无实数根. 程序框图如下:/输出方程有实数根//输出方程无实数根/~r^输出y 值.使用条件结构,有两种可能则用一个判断框,有三种可能结果则用两个判断框,依此类推.否 是 =1?否是程序框图如下:/输入X /4、如图所示是某函数广(x)给出x的值时,求相应函数值y的程序框图.⑴写出函数广(x)的解析式;⑵若输入的*取X和*2(|为|<|&|)时,输出的*值相同,试简要分析*1与*2的取值范围./输入%]y=x2-1/输出y/JL(结束)[解析]⑴由程序框图知该程序框图执行的功能是求函数73 =成一11的值,故,3的解析式为心= |V—1|.(2)画出f(x)=成一11的草图如下图.由图象的对称性知:要使广3)=广3)旦31<|版|,需一15<1,同时也羽>1或一成WM—1,「•xi的取值范围是以| —, 长的取值范围是{x| 泰或一y[2^x<—l}.5、设计一个算法,找出区间[1,1000]内的能被7整除的整数,画出程序框图.[解析]第一步,取k=\.第二步,判断AW1000是否成立,若不成立,则执行第五步.第三步,若#除以7的余数为0,则输出上第四步,将妇KJ值增加1,返回执行第二步.第五步,结束.程序框图如图.[解析]程序框图如下:6、画出求满足12+22+32+- + /?2>106的最小正整数〃的程序框图.7、国家法定工作II 内,每周工作时间满工作量为40小时,每小时工资8元;如需要加班,则加班时间每小时工资为10元.某人在一周内工作时间为*小时,个人住房公积金、失业险等合计为10%.试画出其净得工资y 元的算法的程序框图.(注:满工作量外的工作时间为加班)[解析]由题意知,当03W40时,乂=8*(1 —10%)=7.2才,7.2x0<xW40 当尤>40 时,r=[40X8+U-40) X10] X (1-10%) =9x-72, :.y=\•9才一72*>40此函数为分段函数,故用条件结构表达,条件为*>40,程序椎图为:8、相传古代印度国王舍罕要褒赏他聪明能干的宰相达依尔(国际象棋的发明者),问他需要什么,达依尔说:“国王只要在国际象棋的棋盘第一格子上放一粒麦子,第二个格子上放两粒,第三个格子上放四粒,以后按此比例每一格加一倍,一直放到第64格(国际象棋8X8 = 64格),我就感恩不尽,其他什么也不要了. ”国王想: “这有多少,还不容易!”让人扛来一袋小麦,但不到一会儿就全用没了,再扛来一袋很快又没有了,结果全印度的粮食用完还不够,国王很奇怪.一个国际象棋棋盘能放多少粒小麦,试用程序框图表示其算法.[分析]根据题目可知:第一个格放1粒=2°,第二个格放2粒=2',第三个格放4粒=2七第.四个格放8粒=23,…,第六十四格放263粒.则此题就转化为求1 + 21+22+23+21+-+263的和的问题.我们可引入一个累加变量S,一个计数变量1 , 累加64次就能算出一共有多少粒小麦.[解析]一个国际象棋棋盘一共能放1+21 + 22+23+21 + -+263粒小麦.程序框图如图所示./ 输His/I J(结束〕9、(1)用辗转相除.法求840与1764的最大公约数.(2)用更相减损术求459与357的最大公约数.[解析]⑴1746=840X2 + 84 840 = 84X10 + 0 所以840与1764的最大公约数为84. (2)459-357=102 357-102=255 255-102=153 153-102 = 51 102-51=51所以459与357的最大公约数为51.10、用秦九韶算法求多项式f3 =/-5/+6? + ^+0. 3好2当*=—2时的值.[解析],: f'3 =/—5/+6^+0 • x+x +0. 3^+2= (((((*—5)x+6)x+0)x+l)x+0. 3)矛+2.••当x=— 2 时,v()=l Ui = —2 —5=—7 处=—7X (―2)+6 = 20 K J =20X (—2) +0 = —40 KI=-40X (一2)+1 = 81 府=81 X (— 2)+0.3 =— 161. 7 ^=-161. 7X (-2)+2 = 325.4A A-2) =325. 4.11、有甲、乙、丙三种溶液分别重147 g, 343 g, 133 g,现要将它们分别全部装入小瓶中,每个小瓶装入液体的质量相同,则每瓶最多装多少溶液?[解析]每个小瓶的溶液的质量应是三种溶液质量147, 343, 133的公约数,最大质量即是其最大公约数. 先求147 与343 的最大公约数:343-147=196, 196—147 = 49, 147 — 49 = 98. 98—49 = 49.所以147与343的最大公约数是49.再求49 与133 的最大公约数:133—49=84, 84-39=35, 49-35 = 14, 35-14 = 21, 21-14=7,14-7=7,所以49与133的最大公约数为7,所以147, 343, 133的最大公约数为7.即每瓶最多装7 g溶液.12、已知175(8)= 120+r,求正整数匕[解析]V 175(8)= 1X82+7X8.1+5X8° = 12.5, A 125=120+r. Ar=5,即所求正整数尸为5.13、已知44(,)= 36,把67(由转化为十进制数.[解析]由题意得36 = 4X^l+4XA°,则k=8,故67a)=67⑻= 6X8' + 7X8°=55.14、把八进制数2011⑻化为五进制数.[分析]|八进制数|-> FF赫阙一百顽薮[解析]2011(8)= 2X83+OX82+1X8, + 1X8°=1 024 + 0 + 8+1 = 1 033.5| 1033 余数5 | 206 35 | 41 15 | 8 15 I 1 30 1A 2011 ⑻= 13113 ⑸.[点评]把一个非十进制数转化为另一个非十进制数,通常是把这个数先转化为十进制数,然后把I•进制数再转化为另一个非十进制数.15、若10pl⑵=湘2(3),求数字*, y的值及与此两数等值的十进制数.[分析]由二进制及三进制可知,ye {0,1), (1, 2},将二进制数和三进制数都转化为十进制数,再由两数相等及x、*的取值范围可得出x、y的值.[解析]V 10/1 ⑵二配?⑶,.-.lX2:i+0X22+yX2+l = ^X32+0X3 + 2,将上式整理得9*—2y=7,7由进位制的性质知, 01,2}, *日{0,1},当尸0时,*=6(舍),当尸]时,x=l.・・・x=ul,已知数为102⑶= 1011⑵,与它们相等的十进制数为1X32+OX3+2 = 11.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....public class exp2{public static void main(String args[]){int i=0;for(i=1;i<=20;i++)System.out.println(f(i)); }public static int f(int x) {if(x==1 || x==2) return 1;else return f(x-1)+f(x-2); } }【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
【程序3】题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
【程序4】题目:将一个正整数分解质因数。
例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
【程序5】题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1.程序分析:(a> b)?a:b这是条件运算符的基本例子。
【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为 '\n '.【程序8】题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
【程序9】题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。
例如6=1+2+3.编程找出1000以内的所有完数。
【程序10】题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?【程序11】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
【程序12】题目:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。
注意定义时需把奖金定义成长整型。
【程序13】题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。
请看具体分析:【程序14】题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
【程序15】题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x> y 则将x与y的值进行交换,然后再用x与z进行比较,如果x> z则将x与z的值进行交换,这样能使x最小。
【程序16】题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
【程序17】题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
【程序18】题目:两个乒乓球队进行比赛,各出三人。
甲队为a,b,c三人,乙队为x,y,z三人。
已抽签决定比赛名单。
有人向队员打听比赛的名单。
a说他不和x比,c 说他不和x,z比,请编程序找出三队赛手的名单。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
【程序19】题目:打印出如下图案(菱形)****************************1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。
【程序20】题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1.程序分析:请抓住分子与分母的变化规律。
【程序21】题目:求1+2!+3!+...+20!的和1.程序分析:此程序只是把累加变成了累乘。
【程序22】题目:利用递归方法求5!。
1.程序分析:递归公式:fn=fn_1*4!【程序23】题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。
问第4个人岁数,他说比第3个人大2岁。
问第三个人,又说比第2人大两岁。
问第2个人,说比第一个人大两岁。
最后问第一个人,他说是10岁。
请问第五个人多大?1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。
要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。
【程序24】题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
【程序25】题目:一个5位数,判断它是不是回文数。
即12321是回文数,个位与万位相同,十位与千位相同。
【程序26】题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。
【程序27】题目:求100之内的素数【程序28】题目:对10个数进行排序1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。
【程序29】题目:求一个3*3矩阵对角线元素之和1.程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
【程序30】题目:有一个已经排好序的数组。
现输入一个数,要求按原来的规律将它插入数组中。
1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
【程序31】题目:将一个数组逆序输出。
1.程序分析:用第一个与最后一个交换。
【程序32】题目:取一个整数a从右端开始的4~7位。
程序分析:可以这样考虑:(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。
可用~(~0 < <4)(3)将上面二者进行&运算。
【程序33】题目:打印出杨辉三角形(要求打印出10行如下图)1.程序分析:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1【程序34】题目:输入3个数a,b,c,按大小顺序输出。
1.程序分析:利用指针方法。
【程序35】题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
【程序36】题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数【程序37】题目:有n个人围成一圈,顺序排号。
从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
【程序38】题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
【程序39】题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n 为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)【程序40】题目:字符串排序。
【程序41】题目:海滩上有一堆桃子,五只猴子来分。
第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。
第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?【程序42】题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。
求??代表的两位数,及809*??后的结果。
【程序43】题目:求0—7所能组成的奇数个数。
【程序44】题目:一个偶数总能表示为两个素数之和。
【程序45】题目:判断一个素数能被几个9整除【程序46】题目:两个字符串连接程序【程序47】题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
【程序48】题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
【程序49】题目:计算字符串中子串出现的次数【程序50】题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件 "stud "中。