基础算法题
java基础之算法
不积硅步
纸上得来终觉浅,绝知此事要躬行!
展开
-
百钱买百鸡问题
引入我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。都是一个题分析每种鸡至少一个,钱加一起等于100,鸡子数量加起来等于100我们都知道,我们一般用穷值法,在fo原创 2020-05-31 11:58:50 · 23187 阅读 · 6 评论 -
矩阵运算:读入 1 个正整数 n(1≤n≤6),再读入 n 阶方阵 a, 计算该矩阵除副对角线、 最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线
文章目录引入分析代码运行测试引入矩阵运算:读入 1 个正整数 n(1≤n≤6),再读入 n 阶方阵 a,计算该矩阵除副对角线、 最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。分析看到矩阵运算懵了,什么东西,网上只找到答案看不懂,我有倒推一波,这里就涉及到二维数组了,这里写一个二维数组与矩阵的对应关系二维数组可以看作一个坐标轴 int a[3][3]; 第一3代表矩阵的横坐标,就是3排,第二个3代表坐标轴,也就是3纵1 2 3 1的坐标就是a[0][原创 2020-05-30 15:54:17 · 18103 阅读 · 3 评论 -
找出所有不是这两个数组共有的元素
文章目录引入代码运行测试引入找出不是两个数组共有的元素。输入一个正整数 n(1<n≤10),再输入 n 个整 数,存入第 1 个数组中;然后输入一个正整数 m(1<m<=10),再输入 m 个整数,存入第 2 个数组,找出所有不是这两个数组共有的元素。代码#include <stdio.h>int main(){ /** 找出不是两个数组共有的元素。输入一个正整数 n(1<n≤10),再输入 n 个整 数,存入第 1 个数组中; 然后输入一个正整数 m(1&l原创 2020-05-30 12:51:21 · 7108 阅读 · 9 评论 -
使用函数输出一个整数的逆序数:输入一个整数,将它逆序输出。 要求定义并调用函数 reverse(number),它的功能是返回 number 的逆序数。
文章目录引入分析代码运行测试引入使用函数输出一个整数的逆序数:输入一个整数,将它逆序输出。要求定义并调用函数 reverse(number),它的功能是返回 number 的逆序数。例如,reverse(12345)的返回值是 54321。分析分析:找找规律 12345 54321 (需要有一个思想,一般我们获取每个位数上的数字通过%) 12345%10=5 12345/10=1234 5*0+5=51234%10=4 1234/10=123 5*10+4=54123%10=3 1原创 2020-05-30 10:47:47 · 30631 阅读 · 9 评论 -
使用函数验证哥德巴赫猜想:任何一个不小于 6 的偶数均可表示为两个奇素数之和
文章目录引入分析代码运行测试引入使用函数验证哥德巴赫猜想:任何一个不小于 6 的偶数均可表示为两个奇素数之和。例 如 6=3+3,8=3+5,…,18=5+13。将 6~100 之间的偶数都表示成两个素数之和,打印时 一行打印 5 组。试编写相应程序。分析任何一个不小于 6 的偶数均可表示为两个奇素数之和。第一步:需要一个循环循环区间第二步:循环奇数,并且判断该奇数是否为素数,如果为素数求相加等于该偶数两个奇素数(可能是多个),并且每隔5个换行 我们可以把求是否为素数的函数独立出来原创 2020-05-30 10:18:32 · 13275 阅读 · 3 评论 -
输出 m~n 之间所有的Fibonacci数
文章目录引入分析代码运行测试引入使用函数输出指定范围内的 Fibonacci 数:输入两个正整数 m 和 n(1<=m,n<=10000),输出 m~n 之间所有的Fibonacci数。 Fibonacci序列 (第 1 项起): 1 1 2 3 5 8 13 21…… 要求定义并调用函数 fib(n),它的功能是返回第 n 项 Fibonacci 数。例如,fib(7)的返回值 是 13分析从第三项起,前两项和等于下一项值fib(n)是求第某项的值代码//声明函数 int原创 2020-05-30 09:05:12 · 2609 阅读 · 0 评论 -
使用函数输出指定范围内的函数:输入两个正整数 m 和 n,输出 m-n 之 间 的 所 有 完 数
文章目录引入分析代码运行测试引入使用函数输出指定范围内的函数:输入两个正整数 m 和 n(1<=m,n<=1000),输出 m~n 之 间 的 所 有 完 数 , 完 数 就 是 因 子 和 与 它 本 身 相 等 的 数 。 要 求 定 义 并 调 用 函 数 factorsum(number),它的功能是返回 number 的因子和。例如,factorsum(12)的返回值是 16 (1+2+3+4+6)分析factorsum(number)返回 number 的因子和,但是我认原创 2020-05-30 08:44:20 · 13062 阅读 · 1 评论 -
c语言逗号运算符
引入设以下变量均为 int 类型,表达式的值不为 9 的是 CA. (x=y=8,x+y,x+1) B. (x=y=8,x+y,y+1) C. (x=8,x+1,y=8,x+y) D. (y=8,y+1,x=y,x+1)运算这个逗号运算符java里面还像没有,它的逗号是分割符。c有拿(x=y=8,x+y,x+1)他求的是最后一个逗号后的值为9在有的地方它不是当逗号运算符用,当分隔符用...原创 2020-05-29 22:08:23 · 1903 阅读 · 0 评论 -
设字符型变量 x 的值是 064,表达式....的值是
文章目录引入分析进制转换~按位非运算符<<是左移运算符&按位与运算符^按位异或运算符、|按位或运算符解答第一步先算~x第二步x<< 2第三步208&x第四步-53^16坑点引入设字符型变量 x 的值是 064,表达式“~x^x<< 2&x”的值是: AA.0333 B.333 C.0x333 D.020分析我看到这个题,感觉考的很细,把不常用进制转换、运算符、优先级都考到了进制转换首先064代表的是8进制转换为十进制 4*8^0原创 2020-05-29 19:50:28 · 17541 阅读 · 16 评论 -
高空坠球问题
文章目录引入分析代码运行测试引入高空坠球。皮球从 height(米)高度自由落下,触地后反弹到原高度的一半, 再落下,再反弹……如此反复。问皮球在第 n 次落地时,在空中一共经过多少距 离?第 n 次反弹的高度是多少?输出保留 1 位小数。试编写相应程序。分析分析:先我们需要一个高度、反弹的次数我们用假设法写一个例子找找规律,设置高度为10.0,弹了3次 次数 高度 距离 1 5 15 第一次的距离从10米落下有反弹了5米距离是15 2 2.5 22.5 第二原创 2020-05-29 11:56:28 · 2762 阅读 · 2 评论 -
兔子繁衍问题(pat)斐波那契数列
文章目录引入分析斐波那契数列代码运行测试引入兔子繁衍问题。一对兔子,从出生后第 3 个月起每个月都生一对兔子。小兔 子长到第 3 个月后每个月又生一对兔子。假如兔子都不死,请问第 1 个月出生的 一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到 n 对?输入一个不超 过 10000 的正整数 n,输出兔子总数达到 n 最少需要的月数网上说:这个题有两个争议点(坑点),第一个点就是,是第三个月开始生兔子,还是第三个月后开始生兔子。第二个坑点是有的题目没有指名总数是达到n只还是n对正解:因为这个原创 2020-05-28 21:05:36 · 5609 阅读 · 0 评论 -
求序列和:输入 2 个正整数 a 和 n,求 a+aa+aaa+aa…a(n 个 a)之和。例如, 输入 2 和 3,输出 246(2+22+222)。试编写相应程序
文章目录引入分析代码运行测试引入求序列和:输入 2 个正整数 a 和 n,求 a+aa+aaa+aa…a(n 个 a)之和。例如, 输入 2 和 3,输出 246(2+22+222)。试编写相应程序。分析编写一个函数求每项的值,把求和与每项的值分开写成函数。代码#include <stdio.h>//声明函数 int SumA(int a,int n);int fn(int a, int n);int main(void) { /** .求序列和:输入 2 个正整原创 2020-05-28 17:24:17 · 9362 阅读 · 0 评论 -
求序列和:输入一个正整数 n,输出 2/1+3/2+5/3+8/5 +…的前 n 项之和, 保留 2 位小数。该序列从第 2 项起,每一项的分子是前一项分子与分母的和, 分母是前一项的分子
引入求序列和:输入一个正整数 n,输出 2/1+3/2+5/3+8/5 +…的前 n 项之和,保留 2 位小数。该序列从第 2 项起,每一项的分子是前一项分子与分母的和, 分母是前一项的分子分析求序列和就是找规律,该序列从第 2 项起,每一项的分子是前一项分子与分母的和, 分母是前一项的分子,同时需要注意类型转换问题代码#include <stdio.h>int main(void) { /** 求序列和:输入一个正整数 n,输出 2/1+3/2+5/3+8/5 +原创 2020-05-28 16:22:27 · 15452 阅读 · 6 评论 -
打印菱形
文章目录引入分析代码运行测试引入菱形星号“”图案。输入一个正整数 n(n 为奇数),打印一个高度为 n 的 “”菱形图案。例如,当 n 为 7 时,打印出以下图案。试编写相应程序。分析第一个循环打印行数和换行第二个循环打印空格第三个循环打印星号,第二个循环和第三个循环是并列的我们需要注意一点:正三角形和反三角形的空格问题代码#include <stdio.h>int main(void) { /** 菱形星号“*”图案。输入一个正整数 n(n 为奇数),原创 2020-05-28 15:02:13 · 2490 阅读 · 0 评论 -
展开式求和:输入 1 个实数 x,计算并输出下式的值,直到最后一项的绝对 值小于 0.00001,计算结果保留 2 位小数。要求定义和调用函数 fact(n)计算 n 的阶乘,可以调用 pow( )
引入展开式求和:输入 1 个实数 x,计算并输出下式的值,直到最后一项的绝对 值小于 0.00001,计算结果保留 2 位小数。要求定义和调用函数 fact(n)计算 n 的阶乘,可以调用 pow( )函数求幂。试编写相应程序。 s=x+x²/2!+x³/3!+x4/4!+…分析fact()求阶层,需要注意返回值和自变量的初始化结束条件 item >= 1e-5item的值根据pow(x,i)/fact(i)求代码#include <stdio.h>#include &原创 2020-05-28 13:55:40 · 12954 阅读 · 4 评论 -
求奇数和:输入一批正整数(以零或负数为结束标志),求其中的奇数和。试 编写相应程序
引入求奇数和:输入一批正整数(以零或负数为结束标志),求其中的奇数和。试 编写相应程序。分析需要一个循环输入数字,结束调解是输入负数,求奇数的和代码#include <stdio.h>int main(void) { /** 求奇数和:输入一批正整数(以零或负数为结束标志),求其中的奇数和。试 编写相应程序。 */ int n; double sum; //结果为0 // printf("%d\n",1/2); //结果为1 // printf原创 2020-05-28 12:06:53 · 39380 阅读 · 5 评论 -
找出最小的值:输入一个正整数 n, 再输入 n 个整数,输出最小 值。试编写相应程序
引入找出最小的值:输入一个正整数 n, 再输入 n 个整数,输出最小 值。试编写相应程序。分析思考:之前我们都是在循环输入正整数,但是这里需要比较前后两个数的大小,怎么办?我们需要在循环之外先输入一个数设置为最小数,循环里面的<=要改为<,在与循环里面输入的数比较换值找出最小数代码#include <stdio.h> int main (){ /** 找出最小的值:输入一个正整数 n, 再输入 n 个整数,输出最小 值。试编写相应程序。 */ //原创 2020-05-28 09:38:09 · 25042 阅读 · 6 评论 -
e = 1 + 1/1!+1/ 2!+1/ 3!+…+1/n!(数列求和)
文章目录引入分析代码测试引入求 e 的值:输入 1 个正整数 n,计算下式求出 e 的值(保留 2 位 小数),要求使用嵌套循环。试编写相应程序。e = 1 + 1/1!+1/ 2!+1/ 3!+…+1/n!分析几乎都是使用循环做的,我们需要做的就是找规律:这题有两层循环第一层是便利所有项,第二层循环是求阶层,内循环后需要在第一层循环中累加数列和代码#include <stdio.h>int main(){ /** 求 e 的值:输入 1 个正整数 n,计算下式求原创 2020-05-27 23:31:10 · 26284 阅读 · 1 评论 -
猜数字游戏
文章目录引入分析代码测试引入猜数字游戏:先输入 2 个不超过 100 的正整数,分别是被猜数 mynumber 和允许猜测的最大次数 n,再输入你所猜的数 yournumber,与被猜数 mynumber 进行比较,若相等,显示猜中,;若不等,显示与被猜数的大小关系, 最多允许猜 n 次。如果 1 次就猜出该数,提示“Bingo!”;如果 3 次以内猜到该 数,则提示“Lucky You!” ;如果超过 3 次但不超过 n 次猜到该数,则提示“Good Guess!”;如果超过 n 次都没有猜到,则提示原创 2020-05-27 22:35:28 · 1427 阅读 · 1 评论 -
求三角形面积
引入三角形判断:输入平面上任意三个点的坐标(x1,y1)、 (x2,y2)、 (x3,y3), 检验他们能否构成三角形。如果这 3 个点能构成一个三角形,输出周长和面积(保 留 2 位小数);否则,输出“Impossible”。试编写相应程序。分析公式一:已知三角形底a,高h,则 S = ah/2公式二:海伦公式,已知三角形三边a,b,c,则当然求三角形面积公式还有,其他的我们就不说了,可以去百度百科看看…写程序C#include <stdio.h>#include &l原创 2020-05-27 18:46:41 · 441 阅读 · 0 评论 -
三个数比较大小
引入比较大小:输入 3 个整数,按从小到大的顺序输出。试编写相应程序。分析怎么比较大小,常见的算法有冒泡、选择、排序 二分查找法,这些我们这里都不说,三个数比较大小用不到算法,用什么写呢?if、else或者if分析:就是找到三个数中最小的数,最比较另外两个数我第一次写这个题,用的是if、else写的,但是入了坑,看代码if、else#include <stdio.h>int main(){ /** 比较大小:输入 3 个整数,按从小到大的顺序输出。试编写相应程序原创 2020-05-27 17:47:27 · 18823 阅读 · 7 评论 -
猴子吃桃问题
文章目录猴子吃桃问题c猴子吃桃问题猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。到第12天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少个桃子?很明显12是随便给的,它是自定义的理解:第十二天:1个桃子第十一天:口算出来是4个桃子,变成公式就是 1+1x2第十天:口算出来是10个桃子,变成公式就是4+1x2…看的有点萌,我们转换一下,把第十二天看作第一天好理解:原创 2020-05-19 19:35:12 · 696 阅读 · 0 评论 -
素数统计及求和
素数素数百度百科:质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。c# include <stdio.h>//声明该数是否是质数的函数int isPrime(int a); int main(){ /** 素数就是质数,一个大于1的数,除了它本身和 1之外,不能被其他自然数整除 统计素数并求和 我们给定一个区间 */ //获取输入的数 int a,b; scanf("%d%d",&a,原创 2020-05-19 18:42:49 · 2234 阅读 · 0 评论 -
最大公约数、最小公倍数
文章目录最大公约数辗转相除法更相减损术穷举法最大公约数最大公约数百度百科最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]。最小公倍数百度百科两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个原创 2020-05-19 14:45:46 · 805 阅读 · 0 评论 -
方程的整数解
方程的整数解c应该还可以做其他方面的优化,减少循环的次数吧# include <stdio.h>int main(){ /** 方程的整数解 方程:a^2+b^2=2009; 求有几组解集打印出来 */ //不难看出这是一个二元二次函数 //我们使用两次循环,第一层循环就是遍历其中一元a int a,b; for(a=1; a<(int)sqrt(2009); a++) { //第二层循环就是遍历另外一元b for(b=a+1;原创 2020-05-18 23:53:16 · 1342 阅读 · 0 评论 -
乘法表
乘法表1x1=12x1=2 2x2=43x1=3 3x2=6 3x3=9....两个循环,一层是循环9行和换行,一层是打印乘法表和结束条件c# include <stdio.h>int main(){ /** 乘法表 1x1=1 2x1=2 2x2=4 3x1=3 3x2=6 3x3=9 .... */ //两层循环 //第一层循环行数和换行 int i,j; for(i=1; i<=9; i++) { //第二层循环打印每行乘法原创 2020-05-18 22:43:08 · 1549 阅读 · 0 评论 -
金字塔(三角形)
金字塔c# include <stdio.h>int main(){ /** 打印金字塔 * *** ***** */ //以这个金字塔为例,思考我们需要几层循环,每层循环控制什么 int a,b,c; //第一层循环控制有多少行和换行,例如我们这个有三行 for(a=0; a<3; a++){ //第二层循环控制空格,空格数自定义,从上面我们可以看出下一层空格比上一层少一个 for(b=原创 2020-05-18 21:52:21 · 1631 阅读 · 0 评论 -
Π和根据阈值和关系式求圆周率
Π上学学的东西都还给老师了,都忘了Π是什么了,怎么长得有点像n呢,怎么回事...Π百度百科Π,希腊字母。数学中常指代圆周率。圆周率,一般以π来表示,是一个在数学及物理学普遍存在的数学常数。它定义为圆形之周长与直径之比。它也等于圆形之面积与半径平方之比。是精确计算圆周长、圆面积、球体积等几何形状的关键值。我的理解:许多物理和数学公式都会用到,圆的直径我们可以直接使用尺子测出来,圆的周长我们可以滚动圆片测量周长(将圆片放在尺子滚动一圈就测量出圆的周长),绕绳法测量圆的周长(将绳绕圆一周),测量出来的原创 2020-05-18 19:50:14 · 1009 阅读 · 1 评论 -
java模拟洗牌、发牌、看牌(有序、无序)
java模拟洗牌、发牌、看牌(有序、无序) Comparator 、Comparable原创 2019-11-07 15:07:29 · 367 阅读 · 0 评论 -
Collection集合的一些应用
Collection集合的一些应用原创 2019-11-07 15:02:37 · 159 阅读 · 0 评论 -
break、continue、return和十进制转二进制
十进制转二进制(进制转换)/** * * @author klz * 十进制转二进制的方法 * break 跳出总上一层循环,不再执行循环(结束当前的循环体) * continue 跳出本次循环,继续执行下次循环(结束正在执行的循环 进入下一个循环条件) * return 程序返回,不再执行下面的代码(结束当前的方法 直接返回 */public class Ejz {/* ...原创 2019-10-30 14:22:50 · 221 阅读 · 0 评论 -
java排序法之冒泡、选择、插入 和java的二分查找法
java排序法之冒泡、选择、插入 和java的二分查找法import java.util.Arrays;/* * 打印数组 * 冒泡、选择、排序 二分查找法 */public class Array5 { public static void main(String[] args) {// System.out.println(searchIndex(66)); int[...原创 2019-10-30 18:07:13 · 155 阅读 · 0 评论 -
水仙花数
java编写三角形、乘法表、水仙花数(0-1000)public class For { public static void main(String[] args) { // TODO Auto-generated method stub// demo1();// demo2(); demo3(); } private static void demo3()...原创 2019-10-30 12:52:23 · 592 阅读 · 0 评论