- 博客(47)
- 收藏
- 关注
原创 C++ 求网格图安全区问题
根据题目分析可以选择枚举的方法进行解题,首先我们可以定义一个数组来存放是网格否被探测的数据,可以定义一个bool类型数组,首先全定义为false的 如果被该网格被探测则变为true,所以为false的就是没有被探测的,统计这个就可以得出答案。在一个n*n的网格图上有m个探测器,第i个探测器位于(xi,yi)位置,探测半径为ri。接下来m行每行3个整数表示xi,yi,ri(1
2022-10-28 22:48:17
637
1
原创 C++统计方形
有一个n*m方格的棋盘,求其方格包含多少正方形、长方形(此处长方形不包含正方形)这样我们就可以知道得到正方形个数的规律了,正方形最大的边长就是n,m中小的那个。正方形边长为1时 正方形的个数 (n-0)*(m-0)正方形边长为2时 正方形的个数为(n-1)*(m-1)正方形边长为3时 正方形的个数为(n-2)*(m-2)我们就可以求出矩形的个数减去正方形的个数 矩形的个数就是。当正方形的边长为2时,有(3-1)*(2-1)=2个。得到的总数减去正方形的个数就得到长方形的个数了。就以输入2 3为案例。
2022-10-28 22:14:58
1960
原创 C++ 求Pell数列
第二种就是提前建立一个大的数组,提前把pell数列的数存在这个数组之中,相对来说比较耗内存。Pell数列是这样定义的:a1=1,a2=2,...,an=2an-1+an-2。每组测试数据输入一行包含一个正整数k(1
2022-10-25 22:24:41
2309
原创 C++ 求f(x,n)
先求出sqrt(1+x),把这个所求的值作为x继续套下去,直到从1加到n,代码如下。可以根据图片观察出一直加到n=1,而且一直嵌套,那么我们可以从右边往左边开始算,输入x,n,其中x是浮点数,n为正整数,不超过100。输出函数值f(x,n),保留两位小数。
2022-10-25 22:08:49
1526
原创 C++给同学分组
换句话说,map 容器中存储的各个键值对不仅键的值独一无二,键的类型也会用 const 修饰,这意味着只要键值对被存储到 map 容器中,其键的值将不能再做任何修改。解题:将人数进行两人一组的方式分开,输入其中一组一个人的名字,输出这一组另一个人的名字,考虑这个特性,我们可以使用map存储这类一对一的数据。输出保证s是2n个学生中的姓名之一,并且这2n个学生的姓名互不相同,每位学生姓名字符串长度不超过10。接下来输入n行,每行两个字符串s1,s2,表示姓名为s1的同学和名字为s2的同学是同一组。
2022-10-22 14:49:39
916
原创 c++求幂字符串,求字符串转化成a^n形式的最大的n是多少。
解题思路:首先思考如何进行解题,首先输入一个字符串,来求它的幂,那么就可以指定两个string类型的变量比如a,b来接受我们截取的字符串,可以通过循环来截取字符串,定义一个整型k=1,表示截取字符串的位数,首先可以截取字符串的第一个字符放在a中,然后在套用一个循环来截取字符串放在b中,然后加上一个计数器count=0 如果a=b 则count++ 如果a!=b 就退出循环然后k++,下一次来截取两个字符串,如此往复,代码如下。给你一个字符串,请你判断将此字符串转化成a^n形式的最大的n是多少。
2022-10-21 21:22:51
451
1
原创 c++计算二维数组的鞍点
首先要考虑一下做题思路 这个点的要求是行内最大,列内最小,那么就可以利用for来进行遍历求出每行的最大值,记住这个最大值的列的下标,然后和所在的一列进行比较,看是否是此列最小的一个,如果是就输出这个点的下标,不是就输出not found,如何判断是否满足,可以加上一个计数器为0,每比较一次计数器就加一,如果是这列的最小值,这个计数器就应该等于4.给定一个5×5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。
2022-10-20 21:52:28
3522
4
原创 c++求输入一个正整数N,求出这个数字存在多少个因子,以及因子之和。
比如12 12%3==0 3是12的因子 12/3=4 4也是12的因子 我们可以在求出3是12的因子的同时求出4也是12的因子 这样一来那就好多了 但是还有个问题需要考虑 就是当i和n/i相等时 不能计入 比如9的因子3 不能计入两次 而且还有一个问题也是重复计入的问题 继续拿12举例子 当i=3的时候我们已经把 3和4计入因子了 下个循环i++之后i=4了 那3和4则又会被计入,所以我们应该修改一下循环的条件 把i
2022-10-15 18:15:36
3995
原创 C++输入两个数将两个数反转之后相加求和
f(x)的含义为x的反向数,就是将这个数字翻转过来,并且去除前导0。例如f(123)=321,f(1200)=21。求f(f(x)+f(y))
2022-10-15 15:51:00
1226
原创 C/C++,对于一个n*m的矩形,最少可以划分成多少个正方形。
可以了解到以下的情况,当n=m时,其本身就是一个正方形所以可以分1个,当n%m==0时,说明可以被整除 所以可以分为n/m个 比如长12,宽2 最少可以分12/2=6个,下面的情况就是最后一种了 n>m || n
2022-10-09 17:14:52
2717
9
原创 C++,M个苹果放N个盘子内有几种分法,允许空盘,1,5,1 、5,1,1是一种分法
如果分没有空盘的情况,我们可以先把每个盘子都放上一个苹果在进行分,分后我们还有4个苹果,要分3个盘子,所以要继续进行分苹果这个过程 此时是4个苹果分3个盘子,继续分下去可以得到还有1个苹果 3个盘子此时满足第一种情况不能继续分下去了 此时我们要考虑一下空盘的分法,空一个盘,空两个盘,直到盘子只剩一种的情况,所以此时可以在分成两份。一个盘子可以放多个苹果,且允许空盘,那么我们可以利用递归来解题,首先可以分为几种情况,第一种,比如m=1 或者n=1 这种情况只能有一种分法。例子:输入7个苹果 3个盘子。
2022-10-08 21:06:13
1927
1
原创 C++实现数组旋转
例如数组大小n=7 int a[7]={1,2,3,4,5,6,7},旋转k=3次 得到{5,6,7,1,2,3,4}有一个暴力求解的方法 就是一次一次的改变这个数组中元素的位置 时间复杂度为O(n+k),空间复杂度为o(1)还有一种是用空间换时间 直接新建一个数组进行输入最后有一个算法时间复杂度为o(n) 空间复杂度为o(1)的比较简便的方法就是前n-k个先进行翻转 4321567 ,然后后k个在进行翻转4321765 最后整体在进行一次翻转5671234就得到了我们想要的结果...
2022-06-15 19:35:14
829
原创 C/C++用时间复杂度和空间复杂度均为O(N)求一个连续数组中缺失的数字
比如int[a]={0,2,3}则输出1 int[b]={0,1,2,3,5,6}输出4 代码如下int main(){ int n; int* a; cout > n; a = new int[n]; for (int i = 0;i < n; i++) { cin >> a[i]; } int x = 0; for (int i = 0; i
2022-06-15 16:36:56
280
原创 C语言写一个递归函数,输入一个非负整数,返回组成它的数字之和
#include <stdio.h>int asd(int a){ if (a > 9) { return asd(a / 10) + a % 10; } else return a;}int main(){ int a; printf("请输入一个数字:"); scanf("%d", &a); printf("%d", asd(a)); return 0;}...
2021-11-26 09:57:24
1021
原创 C语言计算一个整数的补码中有几个1
数字在内存中是以补码的形式来储存的 补码减一等于反码 反码中1换成0 0换成一就是源码正整数的源反补码是相等的 这几个码都是2进制形式的假如我们输入的是三 三的补码是011其中有2个11代码如下#include <stdio.h>int main(){ int a; printf("请输入一个整数:"); scanf("%d", &a); int b = 0; while (a) { if (...
2021-11-22 17:09:43
901
原创 C语言的冒泡排序
#include <stdio.h>void asd(int *arr, int a){ int c = 0; for (c=0; c < a - 1; c++) //计算冒泡的趟数,为元素个数减一 { int b = 0; int f = 0; //优化项,假如数组已经整齐,没必要来回进行判断 ...
2021-11-21 17:44:23
707
1
原创 c语言编写函数实现求第n个斐波那契数
#include <stdio.h>int asd(int a){ if (a <= 2) return 1; else return asd(a - 1) + asd(a - 2);}int main(){ int a; int b; printf("请输入一个数:"); scanf("%d", &a); b = asd(a); printf("第n个斐波那契数为%d", b...
2021-11-20 12:15:43
932
原创 C语言编写一个函数实现自定义的乘法口诀表
#include <stdio.h>void asd(int a){ int b = 1; int c = 1; for (b = 1; b <= a; b++) { for (c = 1; c <= b; c++) { printf("%d*%d=%2d ", c, b, c * b); } printf("\n"); }}int main(){...
2021-11-20 12:09:17
1119
原创 C语言写一个函数来计算n的阶乘
利用函数的递归,不懂可以看我之前发布的一个博客《c语言的简单递归分析》里面有个很容易理解的例子 一看就懂#include <stdio.h>int asd(int a){ if (a > 1) return a * asd(a - 1); else if (a <= 1) return 1;}int main(){ int a; int b; printf("请输入一个数字;"); scan...
2021-11-19 17:34:21
3413
1
原创 C语言不创建临时变量求字符串的长度
#include <stdio.h>int zzz(char* arr){ int b = 0; while (*arr != 0) { b++; arr++; //arr++去判断数组的下一个元素,因为数组的地址是连续的 } return b;}int main(){ char arr[] = "asdasd"; int a; a = ...
2021-11-18 17:05:27
210
原创 C语言写一个函数交换两个数的值
#include <stdio.h>void asd(int* a, int* b){ int c = *a; *a = *b; *b = c;}int main(){ int a = 10; int b = 20; asd(&a, &b); //传址变量不是传值变量 printf("%d %d", a, b); return 0;}...
2021-11-18 16:37:49
622
原创 C语言实现接受一个无符号整型分别输出它的每一位例如1234输出1 2 3 4
这里实现需要用到函数的递归,代码如下#include <stdio.h>void print(int a){ if (a > 9) { print(a / 10); } printf("%d ", a % 10);}int main(){ int a; printf("请输入一个数字:"); scanf("%d", &a); print(a); return 0;}假如我...
2021-11-18 15:40:41
2436
原创 C语言的简单递归分析
#include <stdio.h>int main(){ printf("%d", printf("%d", printf("%d", 43))); return 0;}输出结果为4321 ,因为printf的返回值时字符的个数首先先打印43 然后第二个printf接受返回值2,所以在打印一个2,然后因为个数为一所以返回一个1 所以最后的printf打印的时1 所以最后的打印结果就是为4321...
2021-11-18 13:23:09
419
原创 C语言写一个函数每调用一次函数a就加一
如下#include <stdio.h>void add(int* a){ (*a)++; //++优先级比较高不括住的话只是a++}int main(){ int a = 0; add(&a); printf("%d\n", a); //因为要改变a的值 所以是传址变量 add(&a); printf("%d\n", a); add(&a); printf("%d\n", a);...
2021-11-18 12:51:47
1287
原创 C语言写一个实现二分查找的函数
#include <stdio.h>int asd(int arr[], int a, int b){ int zuo = 0; int you = b - 1; while (zuo <= you) { int zhong = (zuo + you) / 2; //中间元素的下表的计算必须放在循环内,因为每一次二分查找 ...
2021-11-17 19:18:28
210
原创 C语言写一个函数判段输入的年份是否为瑞年
#include <stdio.h>int asd(int x){ if (x % 4 == 0 && x % 100 != 0 || x % 400 == 0) { return 1; } return 0;}int main(){ int a; printf("请输入一个年份:"); scanf("%d", &a); asd(a); if (asd(a) == 1)...
2021-11-17 18:08:54
139
原创 C语言编写代码模拟三次密码输入的场景
最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输入,最多输入三次。三次均错,则提示退出程序。#include <stdio.h>#include <string.h>int main(){ int a = 1; char arr[] = "mimashuru"; //定义正确密码 char arr1[10]; for (a = 1; a <= 3; a++) { ...
2021-11-17 16:40:51
1004
原创 C语言求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222
代码如下#include <stdio.h>int main(){ int a, b, c, d, e, f; printf("请输入一个1-9的数:"); scanf("%d", &a); b = a * 10 + a; //分别求出十位百位千位万位 c = a * 100 + b; d = a * 1000 + c; e = a * 10000 + d; f = a + b + ...
2021-11-17 16:06:21
641
原创 C语言输出1-999中的水仙花数
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。 (例如:1^3 + 5^3 + 3^3 = 153) 百科名片 水仙花水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身所以我们要求水仙花数必须求出每个数的百位,十位,个位的大小代码如下#include <stdio.h>int main(){ int a, b, c, d; for (a = 100; a <= 999; a++...
2021-11-17 15:19:46
1030
原创 C语言输出菱形
咱们输出的是一个13行的菱形,可以分成两部分,第一部分7行星星逐渐增多的,第二部分6行星星逐渐减少,所以代码也可以分成两部分。第一部分是星星最多13个 每次增加两个星星 减少一个空格 ,第二部分是星星最多11个,每次减少两个星星 增加一个空格 所以根据这样规律就可以写出代码#include <stdio.h>int main(){ int a, b, c; for (a = 1; a <= 7; a++) //第一部分是七行 {...
2021-11-17 15:02:11
10883
1
原创 c语言写一个函数判断输入的数是否为素数
#include <stdio.h>int aaa(int x){ int b = 2; for (b = 2; b < x; b++) { if (x % b == 0) return 0; } return 1;}int main(){ int a; printf("请输入一个整数:"); scanf_s("%d", &a); if (aaa(a) == 1...
2021-11-16 18:11:20
6664
3
原创 C语言写一个一分钟内关机代码
#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char a[10] = { 0 }; //system控制的是电脑中的cmd system("shutdown -s -t 60"); //system的头文件为stdlib.h shutdown-s的意思是关机-t是时间 aaaa: printf(...
2021-11-14 16:54:25
573
原创 C语言写出一个随机生成1-100数字的猜数字游戏
因为要产生1-100的随机数,所以要用到rand()函数(生成随机数),但是只是单纯使用rand()时,第二次运行玩游戏产生的随机数和第一次运行玩游戏产生的随机数相等,这样一来玩几次就知道答案了,本来就无聊的游戏更没趣了,为了每次玩游戏产生的随机数都不相等,所以在使用rand()时,应该在前面使用一个srand()函数,作用是设置一个产生随机数的起始坐标,()内的数值决定了你产生的随机数是多少,所以为了每次产生不一样的随机数,我们应该也要把()内的数设置成一个随机数或者是个不断改变的数,所以我们可以将我们电
2021-11-14 15:46:59
10361
1
原创 C语言编写代码演示多个字符从两端移动,向中间汇聚
#include <stdio.h>int main(){ char arr1[] = "asdasdasdasd"; char arr2[] = "000000000000"; int left = 0; int right = strlen(arr1) - 1; printf("%s\n", arr2); while (left <= right) { arr2[left] = arr1[left]; ...
2021-11-13 19:08:33
156
原创 C语言求十个数中的最大值
#include <stdio.h>int main(){ int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int max = 0; int a = 0; int b = sizeof(arr) / sizeof(arr[0]); //求出数组中数的个数 for (a = 0; a < b; a++) { if (arr[a] > max) //如果arr[]大于ma...
2021-11-13 18:34:58
1714
原创 c语言计算计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
#include <stdio.h>int main(){ int a = 1; double b = 0.0; int c = 1; for (a = 1; a <= 100; a++) { b += 1.0/ a*c; //1.0的原因是为了产生小数,否则1/比一大的数都为0 c = -c; //*c的目的是使其实现所求的式子1-1/2+1/3-1/4等 } printf("之和为...
2021-11-13 18:19:39
621
原创 c语言求1-100中9出现的次数
#include <stdio.h>int main(){ int a = 1; int b = 0; for (a = 1; a <= 100; a++) { if (a % 10 == 9) // 求个位出现9的次数 b++; if (a / 10 == 9) // 求十位出现9的次数 b++; } printf("9出现的次数为:%d", ...
2021-11-13 17:43:37
1101
原创 C语言求两个数的最大公因数
利用辗转相除法进行编写代码辗转相除法辗转相除法又名欧几里得算法(Euclidean algorithm),目的是求出两个正整数的最大公约数。它是已知最古老的算法,其可追溯至公元前300年前。这条算法基于一个定理:两个正整数 a 和 b(a 大于 b),它们的最大公约数等于 a 除以 b 的余数 c 和 较小数 b 之间的最大公约数。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。代码:int
2021-11-13 15:47:25
8771
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人