大一下学期基础算法题
大一下学期算法题的学习与练习
~嘘~禁止想象~
~嘘
展开
-
算法练习
来源:牛客网一:题目描述美团外卖的品牌代言人袋鼠先生最近正在进行音乐研究。他有两段音频,每段音频是一个表示音高的序列。现在袋鼠先生想要在第二段音频中找出与第一段音频最相近的部分。具体地说,就是在第二段音频中找到一个长度和第一段音频相等且是连续的子序列,使得它们的 difference 最小。两段等长音频的 difference 定义为:difference = SUM(a[i] - b[i])2 (1 ≤ i ≤ n),其中SUM()表示求和其中 n 表示序列长度,a[i], b[i]分别原创 2021-01-21 09:38:02 · 147 阅读 · 0 评论 -
数据结构操作题
6-1 线性表元素的区间删除 (6分)给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。函数接口定义:List Delete( List L, ElementType minD, ElementType maxD );其中List结构定义如下:typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data原创 2021-01-21 09:15:31 · 900 阅读 · 0 评论 -
统计数组中的每个数字的个数(链表)
#include <stdio.h>#include <stdlib.h>struct node{ int data; int times; struct node* next;};typedef struct node Ele;Ele* Creatlink(int a[],int N){ Ele *head = NULL, *tail=NULL, *p; for (int i = 0; i < N; i++){ for (p = head; .原创 2020-07-30 17:29:25 · 549 阅读 · 0 评论 -
链表的删除操作(C语言)
1. 删除指定的值#include <stdio.h>#include <stdlib.h>struct node{ int data; struct node* next;};typedef struct node Ele;void print(Ele*head){ Ele *p = head; while(p){ printf("%3d", p->data); p = p->next; } printf("\n");}Ele* Cr原创 2020-07-29 22:22:29 · 1233 阅读 · 0 评论 -
算法练习(使用空循环)
删除所有的重复值Data = {2,2,2,3,3,4,4,4,4,5,5,6}结果:{2,3,4,5,6}#include<stdio.h>int main(void){ int Data[] = {2,2,2,3,3,4,4,4,4,5,5,6}; int i, j; int len = sizeof(Data) / sizeof(Data[0]); for (i = 0, j = 0; i < len && ((Data[i] == Data[i.原创 2020-06-09 21:36:10 · 321 阅读 · 0 评论 -
疫情小区测温(C语言题)
```c#include <stdio.h>#include <string.h>int main(void){char name[10];double tem;int count = 0;scanf("%s",name);while ( strcmp(name, “#结束”) != 0){scanf("%lf", &tem);if (tem > 37){printf("%s %.1lf %d", name, tem ,count);}cou原创 2020-05-25 17:44:35 · 747 阅读 · 5 评论 -
两矩阵相乘(二维数组)
例:输入2 33 21 2 42 0 31 23 20 5输出7 262 19#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 10int main(void){ int A[N][N], B[N][N], mul[N][N]={0}; int max[N], min[N]; int i, j, k, m, n, x, y; int原创 2020-05-18 18:19:53 · 877 阅读 · 0 评论 -
关于单链表(C语言)
读入链表1. 尾插法读入链表.有无头结点的利弊有头结点a. 更快删除/插入第一个结点;b. 确保head的地址不变化;无头结点. …好像没优点…数据域为一个数a. 无头结点struct ListNode *readlist(){ struct ListNode *q,*head,*tail; head=tail=NULL; q=(struct ListNode...原创 2020-05-06 20:09:47 · 238 阅读 · 0 评论 -
将数组前三个移动到数组后面(C语言)
方法一:类似插入排序的方法#include <stdio.h>int main(void){ int a[8] = {3,7,6,9,2,5,8,4}; int len = sizeof(a) / sizeof(a[0]); int temp, i, j; for( i = 0; i < 3; ++i ) { temp = a[0]; for( j = 0;...原创 2020-04-19 17:04:13 · 1853 阅读 · 0 评论 -
十二根木棒,输出所有可以构成三角形的木棒组合(C语言)
不够聪明,哎,还有啥好方法还请大佬指教。#include <stdio.h>#include <stdlib.h>struct triangle{ int a[3]; struct triangle *next; struct triangle *front;};struct triangle *creatList();/* 创建头结点 */void i...原创 2020-04-18 15:23:37 · 785 阅读 · 0 评论 -
算法题练习(关于数组)
一.1#include <stdio.h>int main(void){ int a[8] = {3,7,6,9,2,5,8,4}; int i; int last = a[7]; for( i = 6; i >= 0; --i ) { a[i+1] = a[i]; } a[i+1] = last; for( i = 0; i < 8; ++...原创 2020-04-18 12:52:23 · 511 阅读 · 0 评论 -
寻找数组中的最大值(C语言)
方法一:这样不知道最大值在数组中的位置(但是不同情况不同用法)#include<stdio.h>int main(void){ int a[] = {3,2,5,8,4,7,6,9}; int len = sizeof(a) / sizeof(a[0]); int max = a[0]; for( int i = 1; i < len; i++ ) { if(...原创 2020-04-16 21:15:43 · 20347 阅读 · 0 评论 -
多项式的 加法 与 乘法(C语言 单链表)
/* 单链表 */#include <stdio.h>#include <stdlib.h>struct nape{/* 项 */ int coefficient;/* 系数 */ int exponent;/* 指数 */ struct nape *next;};struct nape *creatList();/* 创建表头 */struct nape...原创 2020-04-15 22:55:19 · 566 阅读 · 0 评论 -
求方差(数组)
1. 直接撸#include <stdio.h>int main(void){ int a[9] = {3,2,5,8,-1,4,7,6,9}; double ave = 0.0, sum = 0.0; int len = sizeof(a) / sizeof(a[0]); for(int i = 0; i < len; i++) { ave += a[i];...原创 2020-04-12 19:15:43 · 3191 阅读 · 1 评论 -
找虫子 5
第一题#include <stdio.h>int main(void){ long n; long k = 1; printf("\n请输入该数:"); scanf("%ld",&n); do{ k *= n % 10; n /= 10; } while(n); printf("%ld\n",k); return 0;}第二题#inclu...原创 2020-04-10 12:12:31 · 145 阅读 · 0 评论 -
找虫子 4
第一题:#include<stdio.h>int main(void){ int i, j; long t, s = 0; int n; scanf("%d", &n); for( i = 2; i <= n; i += 2 ) { t = 1; for( j = 2; j <= i; j++ ){ t *= j; } s +...原创 2020-04-09 19:11:49 · 327 阅读 · 0 评论 -
找虫子 3
第一题:#include<stdio.h>int main(void){ int n; scanf("%d", &n); int a = 2, b = 1, c, k, t; double s; s = 0.0; for( k = 0; k < n; k++){ s += (double)a / (double)b; c = a + b; ...原创 2020-04-08 12:45:38 · 176 阅读 · 0 评论 -
找虫子 2
第一题#include <stdio.h>int main(void){ float sn = 100.0; float hn = sn / 2; int n; for( n = 2; n <= 10; n++){ sn = sn + 2 * hn; hn = hn / 2; } printf("总共经过了%f米\n", sn); printf("第十...原创 2020-04-07 13:13:11 · 180 阅读 · 0 评论 -
选猴王(约瑟夫问题)
选猴王一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?整体思路: 建立头尾相连的链表,将每个猴子编号,循环筛选。#include <stdio.h>...原创 2020-03-04 21:46:48 · 1194 阅读 · 3 评论 -
字符菱形(空心)
#include <stdio.h>int main(void){ char a[26] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; int n,...原创 2020-04-04 22:53:18 · 911 阅读 · 0 评论 -
找虫子 1
first#include <stdio.h>int main(void){ int sum = 1,n,i=1; scanf("%d", &n); printf("\n"); while(i<=n) { sum = sum*i; i++; } printf("sum = %d",sum); return 0; } second#i...原创 2020-04-03 12:58:47 · 442 阅读 · 0 评论 -
指针学习小问题
直接上代码了1. 关于sizeof( )的指针问题#include <stdio.h>void fun(int *a, int len);int main(void){ int a[6] = {3,2,5,8,4,7}; fun(a, 6); fun(a+2, 4); printf("%d ", sizeof(a));/*测的是数组的大小*/ return 0; ...原创 2020-03-29 15:57:21 · 241 阅读 · 0 评论 -
算法题练习(指针)
文章目录算法题练习1. 将数组a中比第一个元素小的元素平移到第一个元素之前2. 将所有奇数移至偶数之前3. 将数组a从中间一分为二,将前半段与后半段按顺序交换算法题练习1. 将数组a中比第一个元素小的元素平移到第一个元素之前#include<stdio.h>int main(void){ int a[] = {6, 2, 5, 8, 4, 7}; int len = s...原创 2020-03-24 12:40:07 · 154 阅读 · 0 评论 -
逆序数组
逆序数组#include <stdio.h>void fun(int a[], int n){ for(int i=0; i<n/2; ++i){ int temp = a[i]; a[i] = a[n-i-1]; a[n-i-1] = temp; }}int main(void){ int a[6] = {3,2,5,8,4,7}; fun(a, ...原创 2020-03-22 17:04:33 · 310 阅读 · 0 评论 -
常用的8种排序算法(C语言)
文章目录1. 冒泡排序2. 选择法排序3. 插入法排序4. 折半法排序5. 希尔排序6. 桶排序7. 快速排序8. 堆排序1. 冒泡排序#include <stdio.h>int main(void){ int a[10] = {1,2,3,4,5,6,7,8,9,10}; int len = sizeof(a) / sizeof(a[0]); for(int i=0; ...原创 2020-03-21 01:25:21 · 436 阅读 · 0 评论 -
给定一个数组输入m, 实现从m处的数组翻转
给定一个数组例如:int a[10]={1,2,3,4,5,6,7,8,9,10} 输入m 实现从m处的数组翻转例如:m=3,将数组的元素变为a[10]={8,9,10,1,2,3,4,5,6,7}m=4 数组a变为a[10]={7,8,9,10,1,2,3,4,5,6}不允许使用库函数#include <stdio.h>int main(void){ int...原创 2020-03-20 19:40:30 · 339 阅读 · 0 评论 -
定义一个数组,值由用户自己输入,判断这个数组是否为回文数组
题目描述:定义一个数组,值由用户自己输入,判断一个数组是否为回文数组。例如:a[5]={1,2,3,2,1} 就是一个回文数组 。b[5]={1,2,3,4,5} 就不是一个回文数组。#include <stdio.h>#define N 10000int input(int a[]);/*手动输入数组*/int judge(int a[], int number);/...原创 2020-03-18 23:06:01 · 758 阅读 · 0 评论 -
算法题练习
算法题练习若有以下定义和语句,且0<=i<10,则对数组元素的错误引用是__C___A、(a+i) B、 a[p-a] C、 p+i D、(&a[i])若有以下说明:int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;,则数值为6的表达式是___C___A、p+6 B 、(p+6) C、*p+=5 D、p+...原创 2020-03-16 00:00:18 · 806 阅读 · 0 评论 -
输入一个数,打印从 1 ~ n 的全排列(C语言 递归)
输入一个数,打印从 1 ~ n 的全排列123132213231321312全排列就是从第一个数字起每个数分别与它后面的数字交换。#include <stdio.h>void permutation(int arr[], int p, int max_key);/*全排列递归函数*/ void creatArray(int array[], int n);/*...原创 2020-03-09 14:00:45 · 3949 阅读 · 0 评论 -
输入一个数,打印从 1 ~ n 的全排列(C语言 字典序法)
字典序法实现全排列看文章前有必要了解一下:我将每个功能都写到函数中,模块化了。代码看着比较长,但能够更清晰的了解字典序法的算法思想(自我感觉…)算法思想都在permutation( ) 函数中体现**代码要求:输入一个数,将从 1 ~ n 的所有排列打印出A. 字典序算法思想:从右往左, 找到第一个右邻大于自己的数Array[a]从右往左, ...原创 2020-03-08 15:26:00 · 2080 阅读 · 0 评论 -
C语言按行列加密解密(英文文本)
按行列加密解密主函数:#include <stdio.h>void code(char *filename);void dcode(char *filename);int main(void){ code("public.txt"); dcode("secret.txt"); return 0; } 加密:/*加密*/ /*函数功能化*/ void...原创 2020-03-06 12:50:03 · 944 阅读 · 0 评论