笔记
harzz
我樂苦多
展开
-
四种方法实现求最大子列和(C++)
第一种暴力破解法,时间复杂度 T(n)=n^3int main(){ int num[10] = { 1,2,4,-5,4,0,-8,9,9,-1 }; int summax=0; for(int i=0;i<10;i++) for (int j = i; j < 10; j++) { int sum = 0; for (int k = i; k <= j; k++) sum += num[k]; summax = sum > sum原创 2022-04-11 23:12:56 · 2149 阅读 · 0 评论 -
【算法】蛇形填数
蛇形填数。在n×n方阵里填入1,2, ...,n×n,要求填成蛇形。例如,n=4时方阵 为:10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 在前n个数字输入结束后,后面输入可以分组输入j'oint snake[9][9];int main(){ int n,i=1,m=0; cin >> n; int x = n - 1, y = 0; mems原创 2022-04-04 20:44:07 · 1452 阅读 · 0 评论 -
数组小问题(大小,复制,开灯问题)
#define maxn 10000005int a[maxn], b[maxn];//将数组的声明放在main外面可以开得很大//在main内时,稍微一点大就会异常退出,比如10000005int main(){ int x, n = 0; while (cin >> x) a[n++] = x; memcpy(b, a, sizeof(int) * n);//可用此方法将a中前n个元素复制到b中 //浮点型数组要用double,形如memcpy(b,a,sizeof(.原创 2022-04-04 20:01:44 · 182 阅读 · 0 评论 -
开始:什么是数据结构(一点点关于复杂度)
递归会占用大量的空间,在数据过大时,程序很可能无法正常运行例如此程序,使用递归,我的垃圾电脑10000都算不到,直接报错了void coutl1(int x) { if (x) { coutl1(x - 1); cout << x; } return ;}int main() { int n; cin >> n; coutl1(n); return 0;}而使用一个普通的循环的话就可以到10000甚至更多了void coutl2(int原创 2022-04-01 18:43:27 · 669 阅读 · 0 评论 -
分数化小数(多精确度小数)
输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b≤106,c≤100。输入包含多组数据,结束标记为a=b=c=0。样例输入:164000样例输出:Case1:0.1667在单单使用double说明变量,用‘/’计算当然是行不通的,于是要用别的方式来计算除法得出的每一位小数都可以用余数乘以十除以除数得其商得到例1/7=0.142857142857…1%7=11*10/7=11*10%7=33*10/7=4...原创 2022-03-25 21:50:41 · 367 阅读 · 0 评论 -
子序列的和
输入两个正整数n<m<10^6,输出1/n²+1/(n+1)²+…+1/m²,保留五位小数。输入包含多组数据,结束标记为n=m=0。样例输入:246553665536000样例输出:Case1:0.42361Case2:0.00001#include<cstdio> //使用scanf()和printf()//其他c语言的库也是可以前加c后去.h用int main(){ int n, m,coun...原创 2022-03-25 21:15:55 · 130 阅读 · 0 评论 -
韩信点兵,多多益善
相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入包含多组数据,每组数据包含3个非负整数a,b,c,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100。输入到文件结束为止。样例输入:2 1 62 1 3样例输出:Case1:41Case2:Noanswerint main(){ ...原创 2022-03-25 21:04:40 · 139 阅读 · 0 评论 -
求水仙花数
输出100~999中的所有水仙花数。若3位数ABC满足ABC=A3+B3+C3,则称其为水仙花数。int main(){ for (int i = 100; i <= 999; i++) { int a = i % 10, b = i /100, c = (i - b * 100) / 10; //cout << a <<' ' << b<<' ' << c<<'\n';.原创 2022-03-25 20:56:46 · 145 阅读 · 0 评论 -
输入输出框架
输入一些整数,求出它们的最小值、最大值和平均值(保留3位小数)。输入保证这些数都是不超过1000的整数。样例输入:2 8 3 5 1 7 3 6样例输出:184.375int main(){ int num, max, min, sum = 0, count = 0; while (cin >> num)//告诉你的windows计算机退出输入:ctrl+z,Linux是:ctrl+d(真的谢) { count++; ...原创 2022-03-25 20:16:28 · 189 阅读 · 0 评论 -
阶乘(注意运行时间)
输入n,计算S=1!+2!+3!+...+n!的末6位(不含前导0)。n≤106,n!表示前n个正整数之积。样例输入:10样例输出:37913(25!末尾有六个零,所以往后的输出都一样)int main(){ const int Mod = 1000000;//常变量 int n,sum=0,p=1; cin >> n; for (int i = 1; i <= n; i++) { p *= i;//每个循环中阶..原创 2022-03-25 19:47:52 · 682 阅读 · 0 评论 -
求近似数(指数表示方法)
计算直到最后一项小于10^-6int main(){ double sum = 0; int f = 1; for (int num = 1;; num += 2) { double a = 1.0 / num; if (a >= 1e-6)//注意指数的表示方法 { sum += f * a; f *= -1; } else原创 2022-03-25 19:44:22 · 529 阅读 · 0 评论 -
3n+1问题
对于任意大于1 的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。经过若干次这样的变换,一定会使n变为1。输入n,输出变换次数。输入范围0~10^9。int main(){ int n,count=0;//count计数 cin >> n; while (n != 1) { if (n % 2 == 1) n = 3 * n + 1; else n = n / 2; count++; }原创 2022-03-25 19:16:58 · 984 阅读 · 0 评论 -
7744问题(C++)
输出所有形如aabb的4位完全平方数1,aabb是否为完全平方数int main(){ double num, num1; for (int i = 1; i < 10; i++) { for (int j = 0; j < 10; j++) { num = i * 1100 + j * 11; //double floor(double x)返回不超过x的最大整数原创 2022-03-25 19:07:56 · 981 阅读 · 0 评论