![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
从c开始的进步之路
作为我刚开始踏上编程路的启蒙语言 现在已经走上了C++的路 并打算以后在C++上面狠下功夫 以后基本不会再写c语言的题目了 于此完结
Love 6
腾讯WXG在职后台小鹅
展开
-
数据结构习题集3:栈的实现及应用:表达式求值 ----(支持多位数乘除法 不支持取反)
文章目录前引实验要求实现思路代码实现代入数据验证正确性输入验证1输入验证2输入验证3输入验证4输入验证5结束语前引做此篇仅作学习参考用 请勿直接复制粘贴 此篇也可作c语言计算器 大作业思路不容易想出来 但是题目已经把思路写出来了按部就班的按照思路走即可实验要求问题描述:设计一个程序,演示用算符优先法对算术表达式求值的过程。利用算符优先关系,实现对算术四则混合运算表达式的求值。(1)输入的形式:表达式,例如2*(3+4)#包含的运算符只能有’+’ 、’-’ 、’’ 、’/’ 、’(’原创 2021-10-26 22:34:55 · 1006 阅读 · 5 评论 -
C语言大作业(随机组句) ---- 简单版本不含注释
#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){ char ch; printf("输入任意建创造出随机水浒传大故事 Q或者q键退出:"); char* name[] = {"鲁智深","武松","潘金莲","林冲","吴用","延灼","李应","顾大嫂","宋清","李逵"}; char* position[] = {"九蛟龙月下","潘家酒楼"原创 2021-03-30 19:06:35 · 522 阅读 · 0 评论 -
C语言大作业(随机洗牌Shuffle Cards) ---- 含注释和思路
文章目录前引思路解析代码实现效果图本篇博客仅作学习参考 禁止直接复制粘贴代码以及任何形式的抄袭行为前引因为博主 C语言已经差不多都快3个月左右没用过了平时刷力扣和做其他的东西都是用的cpp今天布置了两个C语言 叫做大作业其实都很简单这个我就只花了20-30分钟左右就做出来了 很简单但还是打算把代码贴出来吧 做都做了hhh思路解析首先是如何保存卡组呢如果是C++的话 我会用 vector<vector<string>> 很方便很方便的就弄了但是我刚刚去百度原创 2021-03-30 15:55:03 · 1048 阅读 · 0 评论 -
Leetcode 面试题 08.13. 堆箱子(DAY 66) ---- 动态规划学习期(今天只做两道Hard 恰饭拿快递去了)
原题题目代码实现(首刷绝大部分自解)int cmp(const void *a, const void *b) { if((*(int**)a)[0] != (*(int**)b)[0]) return (*(int**)b)[0] - (*(int**)a)[0]; else if((*(int**)a)[0] != (*(int**)b)[0]) return (*(int**)b)[1] - (*(int**)a)[1]; else原创 2021-03-16 12:16:12 · 197 阅读 · 0 评论 -
Leetcode 132. 分割回文串 II(DAY 66) ---- 动态规划学习期(外面在打雷 害怕.jpg)
原题题目代码实现(首刷超时DP 待优化)int minCut(char * s){ int strl = strlen(s),start,end,range; int dp[strl+1][strl+1]; memset(dp,0,sizeof(dp)); for(end = 0;end<strl;end++) { for(start = end;start>=0;start--) { if原创 2021-03-16 11:19:36 · 130 阅读 · 0 评论 -
Leetcode 87. 扰乱字符串(DAY 65) ---- 动态规划学习期(今日眉笔只做两道题 现在去新校门补卡 走路走掉了:( )
原题题目代码实现(首刷大部分看解小部分自解)bool visit(char* s1,char* s2,int strl){ int sum = 0,i; for(i=0;i<strl;i++) sum += (s1[i] - s2[i]); if(sum) return false; if(strl == 1) return true; for(i=1;i<strl;i++) { if(visit(s原创 2021-03-15 14:02:40 · 129 阅读 · 0 评论 -
Leetcode 1074. 元素和为目标值的子矩阵数量(DAY 65)---- 动态规划学习期(说来惭愧一上午就做出来一道题)
原题题目代码实现(首刷自解)四重循环太酷啦int numSubmatrixSumTarget(int** matrix, int matrixSize, int* matrixColSize, int target){ int i,j,m,n,tempsum = 0,ret = 0,dp[matrixSize+1][matrixColSize[0]]; for(i=0;i<matrixSize;i++) { for(j=0;j<matrixCol原创 2021-03-15 11:33:25 · 153 阅读 · 0 评论 -
Leercode 115. 不同的子序列(DAY 65) ---- 动态规划学习期
原题题目代码实现int numDistinct(char * s, char * t){ int tlen = strlen(t),slen = strlen(s); long dp[tlen+1][slen+1],count,end,start,ret = 0; memset(dp,0,sizeof(dp)); for(count=1;count<=tlen;count++) { for(end=count;end<=slen原创 2021-03-14 11:55:10 · 132 阅读 · 0 评论 -
Leetcode 面试题 17.24. 最大子矩阵(DAY 65) ---- 动态规划学习期(确实难顶:( 不看思路根本不会)
原题题目代码实现(首刷看完思路自解)/** * Note: The returned array must be malloced, assume caller calls free(). */int* getMaxMatrix(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){ int* ret = (int*)malloc(sizeof(int) * 4); int i,j,k,max =原创 2021-03-14 11:28:10 · 107 阅读 · 0 评论 -
Leetcode 1388. 3n 块披萨(DAY 64) ---- 动态规划学习期(看到是阿里的面试题 想着必须做完 做完1:30 还没吃饭)
原题题目代码实现(首刷部分看解部分自解)int dp(int start,int end,int* slices){ int i,j,k,count = (end - start + 2)/3,max = -1; int dp[end - start +5][count+1]; memset(dp,0,sizeof(dp)); for(k=start;k<=end;k++) { dp[k][1] = slices[k];原创 2021-03-13 13:33:31 · 148 阅读 · 0 评论 -
Leetcode 123. 买卖股票的最佳时机 III(DAY 64) ---- 动态规划学习期(感悟买卖股票)
原题题目代码实现(大部分看解)int maxProfit(int* prices, int pricesSize){ int buy1 = -prices[0],sell1 = 0,buy2 = -prices[0],sell2 = 0; for(int i=1;i<pricesSize;i++) { buy1 = fmax(buy1,-prices[i]); sell1 = fmax(sell1,buy1+prices[i]);原创 2021-03-13 11:13:04 · 169 阅读 · 0 评论 -
Leetcode 85. 最大矩形(DAY 64) ---- 动态规划学习期(第一题直接轻松拿下 话说现在重邮好热:()
原题题目代码实现(首刷自解)int maximalRectangle(char** matrix, int matrixSize, int* matrixColSize){ if(!matrixSize) return 0; int dp[matrixSize][matrixColSize[0]],ret[matrixSize][matrixColSize[0]],i,j,k,max = 0,row,height; for(i=0;i<matrixSi原创 2021-03-13 10:43:56 · 194 阅读 · 0 评论 -
Leetcode 1547. 切棍子的最小成本(DAY 63) ---- 动态规划学习期(做了几道题 清楚认识到了自己算法题的可怜弱小)
原题题目代码实现(小部分看解 理解思路啊!)int dp[102][102];int cmp(const void*a,const void*b){ return *(int*)a - *(int*)b;}int visit(int left,int right,int* cuts){ if(dp[left][right]!=-1) return dp[left][right]; if(left+1 == right) {原创 2021-03-12 12:01:54 · 181 阅读 · 0 评论 -
Leetcode 1220. 统计元音字母序列的数目(DAY 62) ---- 动态规划学习期 (这道题困难实属往身上贴金 笑死我了)
原题题目代码实现(首刷自解)int countVowelPermutation(int n){ long count1[5],count2[5]; int i,j,count=1,mod = 1000000007; memset(count2,0,sizeof(count2)); memset(count1,0,sizeof(count1)); for(j=0;j<5;j++) count2[j] = 1; for(i=1;i&原创 2021-03-11 11:12:53 · 81 阅读 · 0 评论 -
Leetcode 410. 分割数组的最大值(DAY 62) ---- 动态规划学习期(这道题DP效率太差)
原题题目代码实现(首刷自解 还需优化)int splitArray(int* nums, int numsSize, int m){ int sum[numsSize][numsSize],dp[m][numsSize],start,end,count = 0; memset(dp,0,sizeof(dp)); memset(sum,0,sizeof(sum)); for(end=0;end<numsSize;end++) { for(原创 2021-03-11 10:41:35 · 125 阅读 · 0 评论 -
Leetcode 42. 接雨水(DAY 62) ---- 动态规划学习期
原题题目代码实现int trap(int* height, int heightSize){ int leftdp[heightSize+1],rightdp[heightSize+1],i,temp,sum = 0; memset(leftdp,0,sizeof(leftdp)); memset(rightdp,0,sizeof(rightdp)); for(i=1;i<heightSize;i++) { temp = leftdp[原创 2021-03-11 09:25:23 · 299 阅读 · 0 评论 -
Leetcode 1510. 石子游戏 IV(DAY 61) ----动态规划学习期(以后再也不熬夜了 熬夜之后第二天一天都没精神)
原题题目代码实现(首刷基本看解)bool winnerSquareGame(int n){ int dp[100001] = {0},temp,i,k; for(i=1;i<=n;i++) { for(k=1;(temp=(k*k))<=i;k++) { if(!dp[i-temp]) { dp[i] = 1; brea原创 2021-03-06 14:47:33 · 162 阅读 · 0 评论 -
Leetcode 1359. 有效的快递序列数目(DAY 61) ----动态规划学习期(第一题昨晚熬夜想把浙大Python题做完)
原题题目代码实现int countOrders(int n){ int i,mod = 1000000007,temp; long pre = 1,now = 1; for(i=1;i<n;i++) { pre = now,temp = i*2+1; now = ((temp+1) * temp * pre /2) % mod; } return now;}原创 2021-03-06 11:39:14 · 137 阅读 · 0 评论 -
Leetcode 1147. 段式回文(DAY 60) ---- 动态规划学习期(第一题难度并不难但是感觉今天状态不是很好)
原题题目代码实现(首刷部分看解部分自解)int test(char* text,int count,int start1,int start2){ int i; for(i=0;i<count;i++) if(text[start1+i] != text[start2+i]) return 0; return 1;}int longestDecomposition(char * text){ int strl = strlen(t原创 2021-03-05 10:52:33 · 214 阅读 · 1 评论 -
Leetcode 1406. 石子游戏 III(DAY 59) ---- 动态规划学习期 (仔细思考后 以后必须上的课就看会书和看会网课打发时间)
原题题目代码实现(首刷大部分看解小部分自解)char * stoneGameIII(int* stoneValue, int stoneValueSize){ int dp[50004] = {0},i,j,sum = 0; for(i=stoneValueSize-1;i>=0;i--) { dp[i] = INT_MIN; sum += stoneValue[i]; for(j=1;j<=3;j++)原创 2021-03-04 15:42:23 · 101 阅读 · 1 评论 -
Leetcode 1340. 跳跃游戏 V(DAY 59) ---- 动态规划学习期(今天上午只做了一道题 真麻了 去上大物实验了)
原题题目代码实现(首刷部分看解部分自解)int memory[1000],max;void search(int* arr,int pos,int arrSize,int ability){ if(memory[pos]) return; memory[pos] = 1; int i; for(i=pos-1;i>=0 && pos-i<=ability && arr[i]<arr[pos];i--)原创 2021-03-04 09:55:45 · 126 阅读 · 1 评论 -
Leetcode 1478. 安排邮筒(DAY 59) ---- 动态规划学习期(第三题做完下午3:30什么水平 Hard确实提升大 )(含题解)
原题题目题目题意题目的意思就是 把邮箱安排在房子间 而且邮箱的个数为k个然后每个房子到随意一个邮箱距离之后要最小 显然每个房子肯定是去最近的邮箱距离最小然后题目要求我们求 邮箱最优放置后 所有房子距离之和我的思路很幸运 加了个Qsort函数 排了一下序 一下就AC了 现在心情豁然开朗 嘻嘻我刚开始是打算用个三维数组 但最后并没有用 是因为三维没做出来当时是打算这样定义三维数组的 dp[邮箱数][房子起始位置][房子结束位置]但是确实没做出来之后又想了一下 干脆整两个二维数组 先原创 2021-03-03 15:32:29 · 261 阅读 · 1 评论 -
Leetcode 1575. 统计所有可行路径(DAY 59) ----动态规划学习期(第二题蝶直接拿下!)
原题题目代码实现(首刷绝大部分自解小部分看解)int countRoutes(int* locations, int locationsSize, int start, int finish, int fuel){ int dp[locationsSize+1][fuel+1],restfuel,pos,des,temp,sum = 0,mod = 1000000007; memset(dp,0,sizeof(dp)); dp[start][fuel] = 1; i原创 2021-03-03 11:16:21 · 126 阅读 · 0 评论 -
Leetcode 1411. 给 N x 3 网格图涂色的方案数(DAY 59) ---- 动态规划学习期(早上一觉醒来9点钟直接旷掉大物什么水平)
原题题目代码实现(首刷绝大部分看解 小部分自解)int numOfWays(int n){ long preabc = 6,preaba = 6,sumabc = 6,sumaba = 6,mod = 1000000007; int i; for(i=1;i<n;i++) { sumabc = (preaba * 2 + preabc * 3) % mod; sumaba = (preaba * 2 + preabc * 2)原创 2021-03-03 10:14:21 · 146 阅读 · 0 评论 -
Leetcode 1420. 生成数组(DAY 58) ---- 动态规划学习期(困难的题确实不好做 先去吃饭回来看能不能再做一道)
原题题目代码实现(首刷大部分看解小部分自解)int numOfArrays(int n, int m, int k){ long dp[n+1][k+1][m+1],numbers,cost,tempnumber,i,mod = 1000000007,sum = 0; memset(dp,0,sizeof(dp)); for(numbers=1;numbers<=n;numbers++) { for(cost=1;cost<=k;cost原创 2021-03-02 11:52:38 · 113 阅读 · 0 评论 -
Leetcode 1335. 工作计划的最低难度(DAY 58) ---- 动态规划学习期(接下来十多天可能都做的是Hard)(含思路分析)
原题题目思路分析1335. 工作计划的最低难度 其实在我拿到这道题的时候 一眼也就看出来大致方向是怎么做的 这道题如果大家是按照难度做的话 那么其实和上面一道题 分割字符串III很相似的 所以这道题我在调试+代码15min左右也就完成AC了中心解题题意首先我们抛开这道题背后的什么工作难度 什么几项任务的文字除开 我们直接进入正题直戳重心就是:我们需要把数组分割成 d 个子数组 每个子数组最大的数就代表了这个子数组的数值 然后我们需要把所有子数组(等于d个代表数相加)加起来 我们需要求这几个原创 2021-03-02 09:29:54 · 243 阅读 · 0 评论 -
Leetcode 1278. 分割回文串 III(DAY 57) --- 动态规划学习期(今天上午遇到啥比事情了 气惨了 今天只做两道题明天早起图书馆)
原题题目代码实现(部分代码 只做出来了区间最小修改)int palindromePartition(char * s, int k){ int strl = strlen(s),end,start,i,j,temp; int dp[strl][strl]; memset(dp,0,sizeof(dp)); for(end = 1;end<strl;end++) { for(start = end-1;start>=0;start原创 2021-03-01 12:52:03 · 115 阅读 · 0 评论 -
Leetcode 72. 编辑距离(DAY 57) ---- 动态规划学习期(一个寒假住寝室 电费377 什么水平 爹怒了)(含题解)
原题题目代码实现(含题解注释 首刷大部分看解)int minDistance(char * word1, char * word2){ int strl1 = strlen(word1),strl2 = strlen(word2),i,j; int dp[strl1+1][strl2+1]; memset(dp,0,sizeof(dp)); for(i=0;i<=strl2;i++) dp[0][i] = i; //word2全添加 f原创 2021-03-01 10:10:07 · 191 阅读 · 0 评论 -
Leetcode 1289. 下降路径最小和 II(DAY 56) ---- 动态规划学习期(三道结束 吃饭去了)
原题题目代码实现(首刷自解 n^3时间复杂度高了 可优化但人懒)int minFallingPathSum(int** arr, int arrSize, int* arrColSize){ int dp[201][201],i,j,k,max = INT_MAX; memcpy(dp[0],arr[0],sizeof(int) * arrSize); for(i=1;i<arrSize;i++) { for(j=0;j<arrColSi原创 2021-02-28 12:20:25 · 129 阅读 · 0 评论 -
Leetcode 1312. 让字符串成为回文串的最少插入次数(DAY 56) ---- 动态规划学习期(第二题解决 可以的昂~)
原题题目代码实现(首刷自解)int minInsertions(char * s){ int dp[501][501],start,end,strl = strlen(s); memset(dp,0,sizeof(dp)); for(end=1;end<strl;end++) { for(start=end-1;start>=0;start--) { if(s[start] == s[end])原创 2021-02-28 11:43:43 · 128 阅读 · 0 评论 -
Leetcode 312. 戳气球(DAY 56) ---- 动态规划学习期(明天开学呜呜呜 看书都有点看不下去了)
原题题目代码实现(首刷大部分看解小部分自解)int maxCoins(int* nums, int numsSize){ int* tempnums = (int*)malloc(sizeof(int) * (numsSize+2)),i,j,k; int dp[502][502]; memset(dp,0,sizeof(dp)); memcpy(tempnums+1,nums,sizeof(int) * (numsSize)); tempnums[0] =原创 2021-02-28 10:41:39 · 220 阅读 · 0 评论 -
Leetcode 523. 连续的子数组和(DAY 55) ---- 动态规划学习期
原题题目代码实现(首刷自解)bool checkSubarraySum(int* nums, int numsSize, int k){ int dp[10001] = {0},i,j; for(i=1;i<=numsSize;i++) { if(i == 1) dp[i] = nums[i-1]; else dp[i] = dp[i-1] + nums[i-1]; for(j=0;j<i-1;j++)原创 2021-02-27 14:44:41 · 142 阅读 · 0 评论 -
Leetcode 91. 解码方法(DAY 55) ---- 动态规划学习期(昨天手机没电了 导致早上10点起床 刚刚买书去了)
原题题目代码实现(首刷部分看解部分自解)int numDecodings(char * s){ int strl = strlen(s); int dp[101] = {0},i; dp[0] = 1; for(i=1;i<=strl;i++) { if(s[i-1] == '0') { if(i == 1 || (s[i-2] != '1' && s[i-2] != '2') )原创 2021-02-27 13:11:44 · 132 阅读 · 0 评论 -
Leetcode 面试题 17.08. 马戏团人塔(DAY 54) ---- 动态规划学习期(做题到下午3:30麻了时间复杂度要求logn * n 待会睡觉)
原题题目代码实现(首刷动态规划超时 n^2)int bestSeqAtIndex(int* height, int heightSize, int* weight, int weightSize){ int i,j,tempheight,temphweight,dp[10001] = {0},max = 0; for(i=0;i<heightSize-1;i++) { for(j=i+1;j<heightSize;j++) {原创 2021-02-26 15:41:10 · 154 阅读 · 0 评论 -
Leetcode 1477. 找两个和为目标值且不重叠的子数组(DAY 54)---- 动态规划学习期(未完成 不会处理重叠问题)
原题题目代码实现(首刷)int minSumOfLengths(int* arr, int arrSize, int target){ int dp[1001][1001],i,j,end,start,min1 = INT_MAX,min2 = INT_MAX,endpos1 = -1,startpos1 = -2,endpos2 = -3,startpos2 = -4,temp; memset(dp,0,sizeof(dp)); for(end=0;end<arrS原创 2021-02-26 13:30:35 · 165 阅读 · 0 评论 -
Leetcode 1594. 矩阵的最大非负积(DAY 54) ---- 动态规划学习期(双百解法)(重邮最近好冷好冷 几天短袖几天羽绒服)
原题题目代码实现(首刷自解)int maxProductPath(int** grid, int gridSize, int* gridColSize){ long long dp1[16][16],dp2[16][16],flag = 0,i,j; memset(dp1,0,sizeof(dp1)); memset(dp2,0,sizeof(dp2)); for(i=0;i<gridSize;i++) { for(j=0;j<g原创 2021-02-26 11:44:51 · 158 阅读 · 0 评论 -
Leetcode 剑指 Offer 14- II. 剪绳子 II(DAY 53) ----动态规划学习期(涉及大数运算 可惜C语言没有)
原题题目代码实现(首刷自解但超过大数范围)int cuttingRope(int n){ long dp[1001] = {0}; int i,j,temp; for(i=1;i<=n;i++) { if(i != n) dp[i] = i; temp = i>>1; for(j=1;j<=temp;j++) dp[i] = fmax(dp[i],dp[j]*dp[i-原创 2021-02-25 13:17:38 · 147 阅读 · 0 评论 -
Leetcode 面试题 01.05. 一次编辑(DAY 53) ---- 动态规划学习期 (心头鬼火冒 测试数据出现问题 我真麻了)
原题题目代码实现(首刷自解)bool oneEditAway(char* first, char* second){ int i,flag = 1,strl1 = strlen(first),strl2 = strlen(second),pos1 = 0,pos2 = 0; if(strl1 >= strl2 + 2 || strl2 >= strl1 + 2) return false; for(i=0;i<strl1;i++) {原创 2021-02-25 12:41:37 · 138 阅读 · 0 评论 -
Leetcode 5. 最长回文子串(DAY 53) ---- 动态规划学习期(图书馆终复工 昨天搬寝室懒了一天)
原题题目代码实现(首刷自解)char * longestPalindrome(char * s){ int strl = strlen(s),i,end,start,startpos = 0,endpos,max = -1; char dp[1001][1001]; memset(dp,0,sizeof(dp)); for(end = 0;end<strl;end++) { for(start = end;start>=0;sta原创 2021-02-25 11:12:18 · 255 阅读 · 0 评论 -
Leetcode 1770. 执行乘法运算的最大分数(DAY 52) ----动态规划学习期(今天先两道恰饭)
原题题目代码实现(首刷大部分看解)int maximumScore(int* nums, int numsSize, int* multipliers, int multipliersSize){ long long dp[1010][1010]; int i,j,max; dp[0][0] = 0; for(i=0;i<=multipliersSize;i++) { for(j=0;i+j<=multipliersSize;j+原创 2021-02-23 12:22:45 · 155 阅读 · 1 评论