| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 周总结(第一周) -> 正文阅读 |
|
[C++知识库]周总结(第一周) |
1.我的错题反思: 线性随机键盘、 /*?????? 思路解析: 先输入n,再一次输入第一个、第二个字符串,利用两个for循环,用第一个字符串对第二个字符串依次定位,依次存放再数组中,再依次累加前后项相减项,输出结果。*/ #include <stdio.h> #include <string.h> #include <math.h> int main() { int n; char str[1000];……………………存放第一个字符串 char ch[1000];……………………存放第二个字符串 int num[100];…………………………存为定位的地址 int c; int sum = 0; int i, j, k, h, l; scanf("%d", &n); for (i = 0; i < n; i++) { sum = 0; l = 0; F = 1; scanf("%s", str);…………………………依次输入两个字符串 scanf("%s", ch); for (j = 0; j < strlen(ch); j++)………………第二个字符串,用短的作为被定位者 ?{ for (k = 0; k < strlen(str); k++)………………利用第一个字符串进行定位 ?{ if (ch[j] == str[k]) { num[l++] = k + 1;………………定位字符的位置,并保存。 } } } (错误项,已改正) for (h = 1; h < l; h++)………………从第一项开始,避免数组越界,跳过第一项开始。 ?{ sum += abs(num[h] - num[h - 1]); } printf("%d\n", sum); } return 0; } 反思: 错在累加相减项,原为“for (h = 1; h < l; h++)”未考虑数组的越界,当h=0时“sum += abs(num[0] - num[-1]);”,存在越界值num【-1】,再dev c++上虽然能通过,但在pta上会出现乱码,故改为从第二项开始,跳过第一项,避免了越界。 2.有得: 卖沙,卖沙,三块钱一斤,十块钱三斤 思路: 先利用结构体构建贮存数组,再利用快排对单价进行排序,之后再累加求值 #include <stdio.h> #include <math.h> struct shazi ??????????????????????????????????……………………结构体,先命名 { int zs;???????????????????????????????? …………………………设置变量,总数量 int zj;???????????????????????????????????? …………………………设置变量,总价值 double dj;??????????????????????????????? …………………………设置变量,每种单价 };struct shazi num[1000];??????????????????? …………设置数组num【】??????????????? void QuickSort(struct shazi *num, int xiao, int da)…………调用无参函数 ……………………num为结构体类型,必须声明,struct+结构体名称+数组名 比较详解: 本次比较,与原版快排不同,比较的每种沙子的单价,交换的是结构体变量 (本体结构体变量num附带了总价值、总数量、单价) {???? if (xiao < da) ………………判断是否输入错误 {???? ??? int i = xiao;……………………相当于第一个的下标 int j = da;……………………相当于最后一个的下标 double k = num[xiao].dj;????????????????? ……………………定义最小值为第一个值。 struct shazi p=num[xiao];??????????????? ……………………定义一个结构体变量p。 while (i < j)????????????????????????????????? ___快排算法核心 ?{ while (i < j && num[j].dj >k) { j--; } if (i < j) { num[i++]= num[j]; } while (i < j && num[i].dj< k) { i++; } if (i < j) { num[j--] = num[i]; } } num[i]= p; QuickSort(num, xiao, i - 1);………………返回每次最小值 QuickSort(num, i + 1, da);………………返回每次最大值 }????? ?????? }???? int main() { int n; int i, j; int bag; double sum = 0; scanf("%d %d", &n, &bag); for (i = 0; i < n; i++) ?{ scanf("%d %d", &num[i].zs, &num[i].zj);……………………结构体输入格式 num[i].dj = (1.0 * num[i].zj) / (1.0 * num[i].zs);………………强制类型转换int~~double } QuickSort(num, 0, n - 1);………………………………调用函数,只用输入函数名 ??? for (i = n-1; i >=0; i-- )……………………逆向输出,更改排序为从大到小,优先取大值 { if (num[i].zs < bag) …………………………简单累加 { bag -= num[i].zs; sum += num[i].zj; } else { sum += bag * num[i].dj; break; } } printf("%.2lf", sum); return 0; } 注意: 本题要求时间较短,所以不能用冒泡算法…………只能用快排之类的短时间排序方法。 快排交换数据,一定是比较沙子的单价,交换沙子的所有变量。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 10:47:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |