![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
牛客网刷题
见青山cyrus
小白一枚,今日开启博客学习之路。意在温故基础知识,记录自己工作中的问题与进步,和一些代码感悟,刷题笔记。
展开
-
多线程
题目描述问题描述:有4个线程和1个公共的字符数组。线程1的功能就是向数组输出A,线程2的功能就是向字符输出B,线程3的功能就是向数组输出C,线程4的功能就是向数组输出D。要求按顺序向数组赋值ABCDABCDABCD,ABCD的个数由线程函数1的参数指定。[注:C语言选手可使用WINDOWS SDK库函数]接口说明:void init(); //初始化函数void Release(); //资源释放函数unsignedint__stdcall ThreadFun1(PVOID pM) ; //线原创 2020-10-26 18:57:25 · 180 阅读 · 0 评论 -
DNA序列
题目描述一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。输入描述:输入一个string型基因序列,和int型子串的长度输出描述:找出GC比例最高的子串,如果有多个输出第一个的子串示例1输入AA原创 2020-10-24 22:37:14 · 319 阅读 · 0 评论 -
输入n个整数,输出其中最小的k个
将两个整型数组按照升序合并,并且过滤掉重复数组元素[注: 题目更新了。输出之后有换行]输入描述:输入说明,按下列顺序输入:1 输入第一个数组的个数2 输入第一个数组的数值3 输入第二个数组的个数4 输入第二个数组的数值输出描述:输出合并之后的数组示例1输入31 2 54-1 0 3 2输出-101235#include<stdio.h>#include<string.h>int main(){ int count = 0; i原创 2020-10-21 18:43:54 · 795 阅读 · 0 评论 -
字符串匹配
题目描述题目标题:判断短字符串中的所有字符是否在长字符串中全部出现输入描述:输入两个字符串。第一个为短字符,第二个为长字符。输出描述:返回值:示例1输入bcabc输出true#include <stdio.h>#include <string.h>int main(){ char Arr_short[1024] = {0}; char Arr_long[1024] = {0}; while(scanf("%s\n", Arr_原创 2020-10-20 17:46:30 · 80 阅读 · 0 评论 -
记负均正
题目描述首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。输入描述:首先输入一个正整数n,然后输入n个整数。输出描述:输出负数的个数,和所有正整数的平均值。示例1输入512345输出``0 3.0#include<stdio.h>int main(){ int count_num; while(scanf("%d", &count_num) != EOF);原创 2020-10-19 11:14:03 · 87 阅读 · 0 评论 -
输入整型数组和排序标识,对其元素按照升序或降序进行排序
题目描述输入整型数组和排序标识,对其元素按照升序或降序进行排序(一组测试用例可能会有多组数据)接口说明原型:void sortIntegerArray(Integer[] pIntegerArray, int iSortFlag);输入参数:Integer[] pIntegerArray:整型数组int iSortFlag:排序标识:0表示按升序,1表示按降序输出参数:无返回值:void本题有多组输入,请使用while(cin>>)处理输入描述:1、输入需要输入的整原创 2020-10-15 14:54:12 · 809 阅读 · 1 评论 -
从单向链表中删除指定值的节点-牛客网
题目描述输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。链表结点定义如下:struct ListNode{int m_nKey;ListNode m_pNext;};详细描述:本题为考察链表的插入和删除知识。链表的值不能重复构造过程,例如1 <- 23 <- 25 <- 14 <- 57 <- 2最后的链表的顺序为 2 7 3 1 5 4删除 结点 2则结果为 7 3 1 5原创 2020-06-09 11:16:32 · 488 阅读 · 0 评论 -
牛客网--字符串加解密
*题目描述1、对输入的字符串进行加解密,并输出。2加密方法为:当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;其他字符不做变化。3、解密方法为加密的逆过程。接口描述:实现接口,每个接口实现1个基本操作:void Encrypt (char aucPassword[], char aucResult[]):在该函数中实现字符串加密并输出说明:1、字符串以\0结尾。原创 2020-05-27 16:49:37 · 223 阅读 · 0 评论 -
牛客网--素数和
牛客的通过代码是暴力解法,直接算出了10000以内所有的质数再将输入的数进行比对,真的是比吴宇森还暴力题目描述NowCoder发现某些整数可以拆分成两个不同的素数的和。例如7=2+5、20=3+17=7+13等。他想知道每个正整数都有几种拆分的方法,你能帮他解决吗?输入描述:输入包括多组数据。每组数据仅有一个整数n (1≤n≤100000)。输出描述:对应每个整数,输出其拆成不同素数和的个数,每个结果占一行。示例1输入302620输出322#include <stdio.h&原创 2020-05-25 17:46:21 · 446 阅读 · 0 评论 -
牛客网-坐标移动
**题目描述开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。输入:合法坐标为A(或者D或者W或者S) + 数字(两位以内)坐标之间以;分隔。非法坐标点需要进行丢弃。如AA10; A1A; %; YAD; 等。下面是一个简单的例子 如:A10;S20;W10;D30;X;A1A;B10A11;;A10;*处理过程:起点(0,0)A10 = (-10原创 2020-05-23 18:14:20 · 565 阅读 · 0 评论 -
牛客网--删除字符串中出现次数最少的字符
删除字符串中出现次数最少的字符题目描述实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。注意每个输入文件有多组输入,即多个字符串用回车隔开输入描述:字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。输出描述:删除字符串中出现次数最少的字符后的字符串。示例1abcdd输出dd#include<stdio.h>#include<string.h>in转载 2020-05-22 16:59:44 · 330 阅读 · 0 评论 -
提取不重复的整数 + 合并表记录 + 数字颠倒 + 字符串反转 + 求int型正整数在内存中存储1的个数
提取不重复的整数:题目描述输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。输入描述:输入一个int型整数输出描述:按照从右向左的阅读顺序,返回一个不含重复数字的新的整数示例1输入9876673输出37689#include<stdio.h>int value(int *A, int B){ int i; for(i = 0; i < B; i++) { if(A[i] == A[B])原创 2020-05-21 17:43:34 · 148 阅读 · 0 评论 -
牛客网刷题--字符个数统计
题目描述编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。注意是不同的字符输入描述:输入N个字符,字符在ACSII码范围内。输出描述:输出范围在(0~127)字符的个数。示例1输入abc输出3解题思路:第一种,将每个不重复的字符单独拿出来放进数组,最后进行该数组的大小计算,注意在将字符靠背巾数组时要使用strncat,不能使用strcat。strcat会将该地址下之后的所有字符都拷贝进去而不是一原创 2020-05-16 14:34:02 · 510 阅读 · 0 评论 -
字符串分割--CAN通信
题目描述•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。输入描述:连续输入字符串(输入2次,每个字符串长度小于100)输出描述:输出到长度为8的新字符串数组示例1输入abc123456789输出abc000001234567890000000算是比较简单的一道了,直接拆分为8的小段,超过len的部分就替换成0就可以了,工作中倒是碰到过这种算法,比如CAN通讯的时候。#include<st原创 2020-05-15 11:13:51 · 407 阅读 · 0 评论 -
牛客网刷题--字符串排序
题目描述编写一个程序,将输入字符串中的字符按如下规则排序。规则 1 :英文字母从 A 到 Z 排列,不区分大小写。如,输入: Type 输出: epTy规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。如,输入: BabA 输出: aABb规则 3 :非英文字母的其它字符保持原来的位置。如,输入: By?e 输出: Be?y注意有多组测试数据,即输入有多行,每一行单独处理(换行符隔开的表示不同行)输入描述:输入字符串输出描述:输出字符串示例1输入A Famous原创 2020-05-13 17:31:55 · 485 阅读 · 0 评论 -
牛客网刷题--字串的连接最长路径查找(字符串排序)
冒泡排序,直接比较字符串大小(strcmp)#include<stdio.h>#include<string.h>int main(){ int Number_count; scanf("%d\n", &Number_count); char Arr[Number_count][100]; int i, j; for(i = 0; i < Number_count; i++) { gets(Arr[原创 2020-05-12 16:51:02 · 118 阅读 · 0 评论 -
牛客网刷题-华为 寻找最长重复字串,若有长度相同的则输出ASCII最小的那串
寻找字符串最长重复字串,若有长度相同输出ASCII最小的那串注意事项:1.注意临界问题;2.本代码使用的的跳转。当每一次找完一种字符时i跳转至下一个与其不同的字符,这样的话,j就因为for循环指向i+1了,所以count除了初始化等于0;之后的每次count都要等于1。#include <stdio.h>#include <string.h>int main(){ char Arr[1024] = {0}; while(scanf("%s", Arr)原创 2020-05-11 14:40:41 · 173 阅读 · 0 评论 -
牛客网刷题-----句子逆序
挺有意思的一道题,解题思路为一个一个单词找出来单独打印,单独拎出来是因为遇到了比较有意思的地方,1.容易导致core droped的:在第一次进行遍历争端文字的时候记得strlen求出的长度len再应用过程中赋值记得减去1,因为数组是从零开始数数的,第一次遍历的时候要考虑到“\0”。2.每一次进行刷新数组时要清空之前的,后续优化:1.可以使用按字符反转,反转完再将每个单词进行反转,这样只需要写一个反转函数2.可以使用strcpy经完成的每一个单词都放入数组最后再进行打印。#include<原创 2020-05-08 17:59:49 · 210 阅读 · 0 评论