- 博客(65)
- 收藏
- 关注
原创 菜学C++ Day63 OJ题目1586扫地机器人
我的解法:首先创建一个最大的数组,直接把最大的9*9的矩阵数组给包围起来,这样就可以避免i+1数组越界的问题;其次是给11*11的数组初始化为0,这样来判断这个位置是否被遍历赋值过;再有就是是否满足出了矩形或者扫过的情况,按右、下、左、上的顺序+1#include<iostream>#include<iomanip>//最外围有一圈,所以是11*11大小的数组#define N 11using namespace std;//改变了的方向int f(i...
2021-12-05 14:38:07 1804
原创 菜学C++ Day62 OJ题目1695基础】阿克曼(Ackmann)函数
有符号signed 表示有正负 无符号unsigned 表示无正负,那就是非负整数 unsigned int的范围是=4294967295由于是测试数据结果不超过int范围,则对于A(3,n)=-3<=,所以n<=6.我的解法:#include<iostream>using namespace std;//阿克曼函数int A(unsigned int m, unsigned int n) { if (m == 0)return n +...
2021-12-04 11:41:09 853
原创 菜学C++ Day61 OJ题目1163相加之和最大,并给出它们的起始位置
我的解法:我是创建一个函数用于输入数组,然后将相邻四个数据的和按第一个数的位置存入一个新的数组s中,最后找出最大的数字和及位置。其中相邻四个数字和,当超过n的时候减去n就好了,就相当于一个环形数组了#include<iostream>using namespace std;#define N 20//输入一组数void input(int n, int a[]) { for (int i = 0; i < n; i++) { int x; cin &...
2021-12-03 13:57:02 1416
原创 菜学C++ Day60 OJ题目1405小丽找潜在的素数
我的解法:我是创建了一个一维数组存放输入的二进制数据,然后大致思路是将二进制数据转化为十进制数据,再逐次判断是否为素数并计数#include<iostream>#include<cmath>using namespace std;#define N 100//创建数组作为输入void f1(int n,int a[]) { for (int i = 0; i < n; i++) { int x; cin >> x; a[...
2021-12-02 14:30:11 1888
原创 菜学C++ Day59 OJ题目1580扫雷(mine)
我也不知道为什么我的vs打不开这个头文件官方解法:它是按照从a[1][1]开始输入字符,并且划分到110,所以当i-1和j-1的时候是有开创了空间的数组了的,由于判断语句是*,所以原本的0是不相匹配的。我的解法:我本来也是想穷举那八个,而且还是把数组外围变成两行两列加四个角,相当于8个情况加中间的一起穷举,可是写着写着感觉太麻烦了,然后发现可以for循环那8个位置呀,当不满足的时候就跳过继续嘛,这不就是continue语句吗!然后就利用这样列出来了#include<i..
2021-12-01 20:37:12 1216
原创 菜学C++ Day58 OJ题目1083回文数
参考解法:我的解法:我其实也是将原来数字逆序,然后判断的。最开始我本来是打算把每位数字存入数组中,但是发现需要动态创建数组,否则为0的地方不好省略之后来对比,毕竟有数组初始化时就为0的和输入的n中数位有0的,这两个不好区分。#include<iostream>#include<cmath>using namespace std;//将输入的数字逆序int f(int n) { if (n < 10)return n; int q = 0,m...
2021-11-30 16:21:01 1126
原创 菜学C++ Day57 OJ题目1204 有趣的数字图形I
我是首先按照n<100创建了一个[1,100)的数组,然后由于是对角线,那么i行j列,j>=i的时候就是开始顺序输出数组的时候,其中每1行是要换行的,没有数字的j<i的时候是需要有5个英文空格的。#include<iostream>#include<iomanip>using namespace std;void hinput(int x,int a[]) { for (int k = 0; k < x; k++) cout &l...
2021-11-29 19:17:19 1462
原创 菜学C++ Day56 OJ题目1190 对角线I
我的解法:直接是两个for循环当i==j的时候输出1#include<iostream>#include<iomanip>using namespace std;int main() { int n; cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i == j)cout << setw(3) << 1;..
2021-11-26 16:22:34 1467
原创 菜学C++ Day55 OJ题目1151桐桐数
#include<iostream>#include<cmath>using namespace std;//判断是质数,大于1bool z(int i) { if (i == 1)return 0; for (int j = 2; j < sqrt(i); j++) if (i % j == 0)return 0; return 1;}//判断是桐桐数bool t(int n) { for (int i = 1; i < sqrt(n);...
2021-11-25 16:19:28 2386
原创 菜学C++ Day54 OJ题目1146 求S的值 1238 统计每个月兔子的总数
这道题就是由前一个数加上n,n从1依次递增#include<iostream>using namespace std;int main() { int x0 = 1; int s = 0,n = 1; while (s < 5000) { s += x0; x0 += n; n++; } cout << s;}参考解法就是将我的while循环改成for循环,在判断的同时,计数n其实拿到这道题目的时候,我是不知道它属于...
2021-11-23 16:40:21 1183
原创 菜学C++ Day53 OJ题目1236 二分查找
由于我没有使用动态创建数组,导致因为一个int占据4个字节,个元素那就是4*个字节,超过了400008,即10万个int元素左右以下是我固定数组个数的示范:#include<iostream>using namespace std;#define N 1000000//输入递增数组void input(int n, int a[]){ for (int i = 0; i < n; i++) { int x; cin >> x; ...
2021-11-22 20:54:36 565
原创 菜学C++ Day52 OJ题目续1996每个小组的最大年龄&&1862友好数
#include<iostream>using namespace std;#define N 100#define M 100//输入二维数组void input(int n, int m, int a[][M]) { for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) { int x; cin >> x; a[i][j] = x; }}//在每行里找最大值并输出v.
2021-11-20 19:57:36 1570
原创 菜学C++ Day51 OJ题目1996每个小组的最大年龄
#include<iostream>using namespace std;#define N 100#define M 100//输入二维数组void input(int n, int m, int a[][M]) { for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) { int x; cin >> x; a[i][j] = x; }}//在每行里找最大值...
2021-11-19 23:46:44 1672
原创 菜学C++ Day49 昨天的OJ题目
继续昨天没修正的地方#include<iostream>#include<cmath>using namespace std;//判断是否为素数 1为素数bool f0(int i) { for (int j = 2; j < i; j++) if (i % j == 0)return 0; return 1;}//返回去掉最高位后的iint f1(int i) { int n = 0,x = i; if (x != 0) { do{
2021-11-15 00:01:18 203
原创 菜学C++ Day48 OJ题目
有被提醒过,现在已经可以编写一些基础的题目了,那么就应该思考怎么优化算法,是指运行更高效#include<iostream>#include<cmath>using namespace std;//判断是否为素数 1为素数bool f0(int i) { for (int j = 2; j < i; j++) if (i % j == 0)return 0; return 1;}//返回去掉最高位后的iint f1(int i) { in.
2021-11-13 23:46:07 567
原创 菜学C++ Day47 OJ题目
#include<iostream>using namespace std;bool f(int m) { for (int i = 2; i < m; i++) if (m % i == 0) return 0; return 1;}void f1(int str[], int k,int n) { for(int i = 0; i < n; i++) for(int j = i + 1; j < n;j++) if (str[i] &...
2021-11-12 23:25:15 807
原创 菜学C++ Day46 OJ数组题
#include<iostream>using namespace std;int main() { int str[20]; cin >> str[0]; for (int i = 1; i <= str[0]; i++) cin >> str[i]; int max = str[1], min = str[1]; for (int i = 1; i <= str[0]; i++) { if (str[i] > max...
2021-11-11 14:11:18 430
原创 菜学C++ Day45
最近状态不太稳定,有的时候会忘记或者不想练习题目,不过希望自己能够保持习惯,终身学习#include<iostream>using namespace std;int main() { int str[100]; int m; cin >> m; for (int i = 0; i < m; i++) { int x; cin >> x; str[i] = x; } for (int i = 1; i < m - 1.
2021-11-10 21:01:57 562
原创 菜学C++ Day44
#include<iostream>using namespace std;int main(){ int m,n=0; cin >> m; char str[100], ch; while (m) { str[n] = cin.get(); n++; m--; } for (int i = 0; i < m; i++)cout << str[i]; int n; cin >> n; for (int i =...
2021-11-09 23:57:05 410
原创 菜学C++ Day43
#include<iostream>using namespace std;//判断是否为无关bool f(int n,int i) { if (i % 10 == 7 || i / 10 % 10 == 7 || i / 100 % 10 == 7 || i % 7 == 0) return 0; else return 1;}int main() { int n, s = 0; cin >> n; for (int i = 1; i <...
2021-11-07 09:58:02 230
原创 菜学C++ Day42
分治法求众数和重数(众数的数量)排序:数组为有序数列(以升序为例) 将众数初始化为中间数 寻找该众数出现的位置,从左向右第一次出现位置为L,从右向左第一次出现位置为r,重数为r-L+1 判断:倘若左边数的数目<上述重数,则左边不可能有比当前中间数更大的重数,不满足条件,不搜索;右边同理。 当判断上述数量满足条件时,将上一次中间数左边的整个作为一个新数组进行递归;右边同理...
2021-11-06 20:36:51 120
原创 菜学C++ Day41
#include<iostream>using namespace std;int main() { int n,k=0; cin >> n; int a[100]; for (int i = 0; i < n; i++) { int j; cin >> j; a[i] = j; } for (int i = 0; i < n; i++) if (a[i] >= 90) k++; cout <&...
2021-11-05 23:58:34 87
原创 菜学C++ Day40
前缀形式,在表达式计算之前完成自增或自减自增运算符++优先级高于解引用操作符*这里是继续昨天的例题有非常多方法#include<iostream>using namespace std;void f0(char*);void f1(char*);void f2(char*);void f3(char*);void f4(char*);void f5(char*);int main() { char str[] = "Today is Wednesd
2021-11-04 20:59:17 86
原创 菜学C++ Day39
书P92 例4-17删除字符串中的空格字符错误示范:由于是一个一个的判定,用字符数组char[],根据指针遍历,当指向空格的时候就将后一个内容赋值给当前所指的内容(其中倘若下一个字符也是空格,那么需要判断下一个是否是空格,直到不是空格的字符,让指针指向当前的字符)其实需要空格后面的所有字符都往前移,而且这样粘贴赋值会导致最后末尾的值还在,并没有删除。#include<iostream>using namespace std;char* f(char*);int mai
2021-11-03 23:36:53 73
原创 菜学C++ Day38
#include<iostream>using namespace std;int main() { int n;; cin >> n; for (int i = 1; i <= n; i++) { for (int j = i; j > 0; j = j / 10) { int a = j % 10; if (a== 5 || a == 8) cout << i << endl; } } re...
2021-11-02 23:36:05 83
原创 菜学C++ Day37
P91 例4-15 二维数组转置 #include<iostream>using namespace std;//输出数组void print1(int(*p)[3], int n) { cout << "原数组为:" << endl; for (int i = 0; i < n; i++) { for (int j = 0; j < 3; j++) cout << p[i][j] << "\t"; cout
2021-11-01 16:50:54 102
原创 菜学C++ Day36
随机数rand(),头文件 #include<stblib.h> 用法: int x=rand()%a+b,表示x为[b,a-1+b],小数直接先得位数,再除10、100等就可以了 一般要用到随机数种子srand(seed) 其中seed一般为time(0),随时间变化 #include<time.h>srand(time(0)); time(0)指函数返回当前时间,如果发生错误返回0 ...
2021-10-31 19:16:18 146
原创 菜学C++ Day35
解答:我的:#include<iostream>using namespace std;int main() { int n; cin >> n; for (int i = 1; i <= n; i += 3) cout << i << endl; return 0;}
2021-10-30 23:50:33 74
原创 菜学C++ Day34
将一维数组中的元素从小到大排序(升序排列) #include<iostream>using namespace std;/*选择排序法:共有n个元素,小的放最前面a[i],有n-1趟当前元素a[i]和后面所有元素(后一个元素为a[j],j=i+1到n-1来进行比较*/int main() { int a[10] = { 2,5,8,7,9,4,6,1,3,0 }; cout << "排序前的数组为:"; for (int i = 0; i < 10; i
2021-10-29 16:44:31 146
原创 菜学C++ Day33
P86例4-11求二维数组各元素及外围元素的和 #include<iostream>using namespace std;//用元素指针求元素之和int sum1(int* p, int n1) { int sum = 0; for (int i = 0; i < n1; i++) sum += p[i]; return sum;}//用行指针求外围元素(二维数组外面一周数据)的和int sum2( int( *p )[ 5 ], int n2) { int
2021-10-28 23:03:03 263
原创 菜学C++ Day32
#include<iostream>#include<cmath>using namespace std;int f(int i,int k) { if (i == 5 || i % 10 == 5) return k+1; else if (i != 0) return f(i / 10, k); else return k;}int main() { short int n; int k = 0; cin >> n; for (...
2021-10-27 23:54:05 95
原创 菜学C++ Day31
解答:#include<iostream>using namespace std;int main() { for (int i = 100; i < 1000; i++) { int x = i % 10, y = i / 10 % 10, z = i / 100; if ((x+y+z) % 2 == 0 && z > y && y > x) cout << i << endl; ...
2021-10-26 23:05:47 75
原创 菜学C++ Day30
解答:#include<iostream>using namespace std;int main() { double x, y, m, n ; cin >> x >> y; if (x > y) { m = x; n = y; } else { m = y; n = x; } if (m >= 60 && n < 60)cout << "green"; else cou...
2021-10-24 22:48:37 147
原创 菜学C++ Day29
解题:#include<iostream>using namespace std;int fac(int i) { if (i == 1)return 1; else return i * fac(i - 1);}int main() { int n,sum=0; cin >> n; for (int i = 1; i <= n; i++) { sum += fac(i); } cout << sum << en...
2021-10-23 23:08:20 59
原创 菜学C++ Day28
#include<iostream>using namespace std;int main() { int k = 0; for (int i = 1; i <= 1000; i++) { if ((i % 10) == 3 ||(i / 10 % 10)== 3 || (i / 100) == 3)k++; } cout << k << endl;}本来是想早睡的,没想到这道题卡了我一会儿,因为刚开始用的for while嵌套时间太...
2021-10-22 23:46:40 72
原创 菜学C++ Day27
解答:#include<iostream>using namespace std;int main() { for (int i = 10; i < 100; i++) { int m = i / 10, n = i % 10; if (m > n && (m + n) % 2 == 0) cout << i << endl; } return 0;}今天没怎么学,那就打卡一道题吧...
2021-10-21 23:18:37 63
原创 菜学C++ Day26
指针数组 #include<iostream>using namespace std;int main() { int a[4] = { 1,2,3,4 }; int* b[4]; for (int i = 0; i < 4; i++) { b[i] = &a[i]; cout << *b[i] << " "; } return 0;}
2021-10-20 23:10:26 263
原创 菜学C++ Day25
题目解答: #include<iostream>using namespace std;int main() { int n; cin >> n; if (n / 10 > 0 && n / 100 < 1 && n % 2 == 0) cout << "Yes"; else cout << "No"; return 0;} 题目 解答: #include<i..
2021-10-19 23:13:42 83
原创 菜学C++ Day24 get()
继续昨天的cin.get()、【成员函数:cin.get(数组名,数组长度,结束符)】、cin.getline() cin>>是从第一个非空白字符开始到下一个空白字符结束(缓冲区读数,残留数据(包括该结束的空白字符)下次直接读入,跳过输入) cin.get()与cin.get(数组名,数组长度,结束符)是重载(函数名相同,但参数不同,所以达成的作用完全不同) ch=cin.get()和cin.get(char ch)都是读取一个字符的意思 且都对空格、制表符、换行符号不敏感,可以读.
2021-10-18 20:43:11 76
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人