- 博客(19)
- 收藏
- 关注

原创 重复字符的全排列(C语言)
重复字符的全排列本博客是使用递归法找出有重复字符的字符串的全排列输入样例aabb输出样例并统计输出全排类的总数aabbabababbabaabbababbaa6#include<stdio.h>#include<string.h>int num = 0;//统计全排类的总数//交换数组位置void swap(char *s,int a,int b){ char t; t = s[a]; s[a] = s[b];
2020-09-21 16:52:01
2528
2
原创 删数问题(贪心算法实现最优)
问题就不描述了。直接上代码。(每一次实现局部最优,结果一定是最优的)源代码:#include<stdio.h>int main() { char s[100]; int n; scanf("%s %d", s, &n); int len = strlen(s); //核心代码 while (n) //是否还有删除的个数 { int i = 0; while (s[i] <= s[i +
2020-12-27 17:17:40
2297
2
原创 删数问题
测试数据:1785434132891132892#include<stdio.h>#include<string.h>int min = 0;//实现pow的n次方int Pow(int pow, int n){ int sum=1; if(n==0) return sum; for(int i=1;i<=n;i++) sum*=pow; return sum;}//删除data的
2020-12-25 19:42:49
309
原创 子集树数实现n皇后函数
源代码:#include<stdio.h>#include<math.h>int sum = 0;// 判断当前的皇后位置是否合法int isLegal(int *place, int nowQueen){ for(int i=1;i<nowQueen;i++) { if( (abs(nowQueen-i) == abs(place[nowQueen]-place[i])) || place[nowQueen] == place[
2020-12-25 19:41:07
219
原创 作业分配问题
测试数据31 2 33 2 12 1 3源代码:#include<stdio.h>int Works[20][20];int minConsume=0;// 给 Works和minConsume赋值int initWorks(int workerCount){ int t; for(int i=1;i<=workerCount;i++) for(int j=1;j<=workerCount;j++) {
2020-12-25 19:38:53
473
原创 子集和问题
测试数据5 102 2 6 5 45 122 2 6 5 45 152 2 6 5 4#include<stdio.h>int sum=0;int findFlage = 0;int saveNum = 0;int sumSet(int *saveSet){ int s = 0; for(int i = 1;i<=saveNum;i++) s+=saveSet[i]; return s;}int backTrack
2020-12-25 19:36:46
169
原创 n皇后问题 排列数实现
源代码:#include<stdio.h>#include<math.h>int sum = 0;void swap(int *place, int a,int b){ char t; t = place[a]; place[a] = place[b]; place[b] = t;}// 判断当前的皇后位置是否合法int isLegal(int *place, int nowQueen){ for(int i=1;i&l
2020-12-25 19:33:59
253
原创 整数因子分解问题
问题描述:对于给定的正整数n,计算n共有多少种不同的分解式。#include<stdio.h>int searchPass(int n){ int sum=0; for(int i=1;i<=n/2;i++) { if(i==1) { sum+=1; continue; } if(n%i == 0) { //
2020-11-22 16:42:09
222
原创 众数问题
问题描述:给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集合S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集合S的众数是2,其充数为3。输入样例:1,2,2,2,3,5输出样例:2 3#include <stdio.h>#define N 100int main(){ int n; int num[N]; //利用一个键值对,maxKey存储众数, maxValue存储众数的个数 int m
2020-11-21 20:13:29
420
原创 子数组交换问题
问题描述:设a[n-1]是有n个元素的数组,k(0≤k≤n-1)是一个非负整数。试设计一个算法将子数组a[0:k-1]与a[k:n-1]换位。要求算法在最坏情况下耗时O(n),且只用到O(1)的辅空间。样例1:输入:51 2 3 4 52输出:3 4 5 1 2样例2:输入:51 2 3 4 53输出:4 5 1 2 3#include <stdio.h>#define N 100//k<=n/2,从前往后交换数组元素int Swap_One(
2020-11-21 19:59:09
684
原创 寻找最大路径问题
问题描述:在一个二维数组中存储数值,寻找一条最大的路径总和(某两个数之间)#include<stdio.h>#include<stdlib.h>#define M 10int Map[M][M];int scan_f(int m,int n){ int i,j; for(i=0;i<m;i++) { for(j=0;j<n;j++) { scanf("%d", &Map
2020-10-26 09:52:05
551
原创 数字三角形问题
问题描述:给定一个由n行数字组成的数字三角形,如下:(如果是等腰三角形,转化为如下直角三角形。算法一样)73 88 1 02 7 4 44 5 2 6 5设计一个算法,计算出从三角形的顶至底的一条路径,使该路经经过的数字总和最大。(规定路线只能往下和往右)...
2020-10-26 09:42:09
492
原创 自然归并排序(非递归)
算法思想:将一个数组内的本来有序的子段用标记点标记出来,再将每两个子段合并。(剩余的标记点如果不足以两两合并需要例外考虑)具体样例:样例1输入:66 5 4 3 2 1输出:1 2 3 4 5 6样例2输入:55 4 3 2 1输出:1 2 3 4 5源代码:#include<stdio.h>#define N 100//输入数组的值int scan_f(int n, int *s){ for(int i = 0;i<n;i++)
2020-10-02 23:06:10
661
原创 整数划分(C语言)
问题描述:将一个正整数表示成一系列正整数之和,求出所有的划分总数。如输入一个正整数6,它的划分可以为5+1;4+2, 4+1+1;3+3, 3+2+1, 3+1+1+1;2+2+2, 2+2+1+1, 2+1+1+1;1+1+1+1+1+1。划分总数为11。则输出11。输入样例:6输出样例:11源代码:#include<stdio.h>int q(int n, int m){ if(n<1 || m<1) return
2020-09-21 19:14:54
2409
原创 简单计算器
本博客实现一个简单的计算器,用C语言实现详细介绍:模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。输入格式:*输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。输出格式:在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。输入样例:1+2*10-10/2=输出样例:10源代码#include <stdio.h>#
2020-09-21 17:52:28
366
原创 Ackerman函数(C语言)
Ackerman函数递归实现(C语言)此函数在此不做详细介绍。下面直接上代码。输入样例:4 3输出样例:65536源代码#include<stdio.h>int Ackerman(int n, int m){ if(n<0 || m<0) return 0; else if(n==1 && m ==0) return 2; else if(n==0 && m>=0)
2020-09-21 17:20:07
3565
原创 问题 B: DS_7.2 求解连通分量个数(by Yan)
问题 B: DS_7.2 求解连通分量个数(by Yan)题目描述从键盘接收图的顶点集,关系集,创建无向图。第一行依次输入图的顶点个数n,关系个数k,以空格隔开。顶点个数<=20第二行依次输入顶点值,类型为字符。接下去有k行,每行为两个字符 u 和 v,表示节点u 和 v 连通。格式为【uv】,中间不用空格间隔。计算连通分量个数并输出。输出一个整数,表示连通分量个数。输入样例6 7ABCDEFABAEBCCDDADBEC输出样例2#include<
2020-09-13 10:48:21
182
原创 7-2 用指针方法求10个数最大和最小值之差
请使用指针的方法编写程序,程序的功能是从键盘输入10个数,求其最大值和最小值的差。输入格式:输入10个整数,每个整数之间用空格分隔。输出格式:同样例。输入样例:1 2 3 4 5 6 7 8 9 10输出样例:difference value = 9#include<stdio.h>int sub(int *a, int n){ int t,i; ...
2019-06-08 16:49:47
19145
5
原创 6-3 单链表结点删除
本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:struct ListNode { int data; ListNode *next;};函数接口定义:struct ListNode *readlist();struct ListNode *deletem( struct ListNode *L, int m ...
2019-06-08 16:36:38
1115
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人