重拾C语言
文章平均质量分 66
豆腐西红柿
越努力越幸运
展开
-
C语言:最优装载问题
文章目录一、最优装载问题二、解题思路三、代码实现一、最优装载问题给定一个最大装载重量为 M 的卡车和 N 种食品,有食盐、白糖、大米等。已知第 i 种食品最多有 Wi 公斤,其商品价值为 Vi 元/公斤,编程确定一个装货方案,使得装入卡车中所有物品总价值最大。二、解题思路因为每一个物品都可以分割成单位块,单位块的利益越大显然总收益越大,所以局部最优满足全局最优,可以使用贪心法解答。方法如下:先将单位块收益从大到小进行排列;初始化卡车的剩余载重和当前价值;从前到后考虑所有物品:a. 如果可以原创 2021-11-05 20:58:03 · 2688 阅读 · 0 评论 -
C语言:用贪心策略计算活动安排问题的最优解
文章目录前言一、活动安排问题二、解题思路三、代码实现总结前言关于这个活动安排问题的解题思路我第一遍是真的没看懂,所以我就直接看代码了,没想到啊,过一遍代码就直接理解了,真神奇!所以啊,如果第二部分的解题思路没看明白的话就看代码实现吧,代码里也有注释的,哈哈。一、活动安排问题设有 n 个活动的集合 e = {1,2,3,···,n},其中每个活动都要求使用同一资源,如演讲、开会、讲座、文艺演出等活动都需要大礼堂这个资源,而在同一时间只有一个活动能使用这一资源。每个活动 i 都有一个要求使用该资源的原创 2021-11-05 20:18:13 · 9948 阅读 · 0 评论 -
用C语言编程验证 “ 哥德巴赫猜想 ”
文章目录前言一、素数表二、验证哥德巴赫猜想(基础版)三、筛选法求素数四、验证哥德巴赫猜想(加强版)总结前言哥德巴赫猜想是数论中存在最久的未解问题之一。其陈述为:任一大于 2 的偶数都可表示成两个质数之和,例如44=3+41=7+37=13+31。接下来,我们将用C语言编程验证哥德巴赫猜想,并在其基础上使用以空间换时间的方法来提高算法效率。一、素数表要想验证哥德巴赫猜想,就必须先要编程出可以得到素数的函数,在这里我们使用自定义函数 prime() 判断一个数是否为素数,进而打印100以内的全部素原创 2021-10-31 14:27:54 · 53875 阅读 · 6 评论 -
AcWing 770. 单词替换
文章目录原题题目二、解题思路三、代码实现四、题目总结原题题目题目链接在这里二、解题思路思路很简单,按单词为单位遍历字符串,找到相同单词并替换。可偏偏在C语言对字符串的操作并不是太容易(因为C语言没有字符串类型,只有字符数组)所以最后还是找到了 Belous同学的一篇题解,发现可以使用 sscanf 函数并配合指针来实现挨个读取单词检查后输出。看来 sscanf 以后还是要注意一点的,毕竟人家是专门从字符数组中读入数据(而不是键盘),另外,还得再学学指针的知识,快忘完了都。。。三、代码实现#原创 2021-10-27 23:04:25 · 111 阅读 · 0 评论 -
AcWing 775. 倒排单词
文章目录一、原题题目二、解题思路三、代码实现四、题目总结一、原题题目原题链接在这里二、解题思路哎呀呀,是我想复杂了,什么用二维数组的第二维度或另开辟一个数组用来存放每个单词,其实不用的。。。正确的思路是多定义一个变量作下标,倒着遍历每个字母(用一个 if 看是否存在空格来判断本次遍历是否为原句的第一个单词),每到达一个空格就从这个位置开始顺序遍历输出,直到下一个空格结束,这样就算是倒着输出每个单词了。最后别忘了最后输出原句第一个单词。三、代码实现#include <stdio.h&g原创 2021-10-27 19:39:24 · 88 阅读 · 0 评论 -
AcWing 756. 蛇形矩阵
文章目录一、题目原题二、解题思路三、代码实现四、题目总结一、题目原题二、解题思路听y总视频讲解,这道题目中有着一个很常用的技巧,就是用两个数组来标记偏移量,具体什么意思?也就是利用位置和下标的关系总结出来的一个实用性小技巧,请看下图:假设在矩阵中有一个坐标为 (x,y) ,那么它的上下左右4个位置的坐标就可以用上图来表示,所以这四个坐标都可以用原坐标 (x,y) 来表示(横纵坐标加上偏移量);另外,我们可以分别用 d(0、1、2、3)来表示四个方向,当需要转弯时,d = (d+1) % 4 即原创 2021-10-27 17:49:06 · 71 阅读 · 0 评论 -
AcWing 754. 平方矩阵 II
文章目录一、原题题目二、解题思路三、代码实现四、题目总结一、原题题目虽然这次比较简单,写的也很顺利,但还是来写一下吧,毕竟人家三道题目都是一个系列的,好了,来看题目:二、解题思路看样例可以知道,每个方阵对角线的位置都是1,并从此向下向右逐次加1,所以我们就可以这样来进行遍历再赋值。其中,对角线位置下标关系为 i == j ,向下遍历的关系是 i > j ,向右遍历的关系是 i < j ,明白这些,就很容易 AC 啦 ~~三、代码实现#include <stdio.h>原创 2021-10-27 16:34:56 · 107 阅读 · 0 评论 -
AcWing 753. 平方矩阵 I
文章目录一、原题题目二、解题思路三、代码实现三、题目总结一、原题题目原题链接在这里二、解题思路看样例,每输入一个 n ,就会有 n x n 大小的二维数组,最外一圈是1,第二圈是2,依次类推。从中,我们不难看出,这些方阵数组都是对称的,并且可以从中找出数和位置的坐标的关系:for (int i = 1; i <= n; i ++) for (int j = 1; j <= n; j ++) a[i][j] = min(min(i, j), min(n-i+原创 2021-10-26 09:05:11 · 156 阅读 · 0 评论 -
全排列问题(AcWing 823. 排列)
文章目录一、原题题目二、解题思路:dfs三、代码实现四、题目总结一、原题题目这里是原题链接这里是 AcWing 大佬 Fphoenix 写的题解,请允许我借过来一张图来做这次的笔记二、解题思路:dfs三、代码实现#include <stdio.h>const int N = 10;int n; // n 定义为全局变量可以方便函数使用,要不然括号里还要再添上一个变量n //就像nums[]和st[]一样,这里没有定义为全局变量,所以还要在函数里定义voi原创 2021-10-24 19:16:13 · 1839 阅读 · 0 评论 -
AcWing-822. 走方格(排列组合)
文章目录一、原题题目二、解题思路三、代码实现四、题目总结一、原题题目题目跳转链接在这里:https://www.acwing.com/problem/content/824/二、解题思路刚一看,蒙了,再一看,这不高中时的排列组合经典题目嘛,然后赶紧去百度了一下排列组合的公式,来回忆回忆:嗯嗯,就是这两个公式,都给忘完了,也怪当时没学好,哈哈。这样看来,我们这样解读题目:我们一共需要走 n+m 步,其中有 n 步是向下走的,那么 C(n+m, n) 就是题目所求不同的走法总数目。注意:原创 2021-10-24 18:06:48 · 1503 阅读 · 1 评论 -
调用函数实现数值(变量内容)交换——指针作为函数的参数
文章目录前言一、理论基础二、解决方法总结前言当我们想写一个函数来实现数值交换的时候,很可能会有这样代码:#include <stdio.h>void swap(int x, int y){ int t = x; x = y; y = t;}int main(){ int a=3, b=5; swap(a, b); printf("%d %d", a, b); return 0;}但结果呢?不如人意,人家两个变量该是什么数还是什么数,怎么会这样呢?别着原创 2021-10-23 22:11:31 · 2310 阅读 · 0 评论 -
AcWing-774. 最长单词
文章目录一、原题题目二、解题思路二、代码实现四、题目总结一、原题题目题目跳转链接点这里二、解题思路本来是想着像上一个只出现一次的字符的题目一样,再另外开辟一个数组来记录句子中的最长单词的,但每统计一次最长单词都得更新,操作有点不好实现,所以这次我们干脆直接上二维数组好了,下标为0的第一行存储整个输入的字符串,接下来以后的每一行都存储单个单词,通过比较来输出最长的那个。二、代码实现#include <stdio.h>#include <string.h>int c原创 2021-10-22 19:16:22 · 80 阅读 · 0 评论 -
AcWing-773. 字符串插入
文章目录一、原题题目二、解题思路三、代码实现四、题目总结一、原题题目二、解题思路题目很简单,就是把一个短字符串加到一个长字符串的特定位置后面即可,其中只需注意一点:该题目有多组输入,先前收藏了一位学长的多组输入笔记,结果看了几遍就吃灰了,得回过头再看看。简单说,先多组输入,再找到各组有最大ASCII码的字符位置,最后根据该位置分三组数据输出。三、代码实现#include <stdio.h>#include <string.h>int main(){ c原创 2021-10-22 10:56:05 · 85 阅读 · 0 评论 -
AcWing-772. 只出现一次的字符
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例原创 2021-10-22 08:02:42 · 92 阅读 · 0 评论