【算法】
算法相关学习笔记
PettyKoKo
从0到1
展开
-
DFS(深度优先算法)——图涂色问题
/*给图涂色问题:相邻的顶点颜色互不相同*/#include<stdio.h>int data[50][50];int n,m,total,color[50];void output(){ int i; printf("\n方案%4d: ",++total); for(i=1;i<=n;i++) printf("%d "...原创 2016-11-18 23:29:36 · 3415 阅读 · 1 评论 -
算法——C语言之实现贪吃蛇
#include<stdio.h>#include<windows.h>#include<conio.h>#include<time.h>#define MAX_WIDE 50#define MAX_HIGH 16short dx=1,dy=0,randxy,score=0;COORD coord;//记录坐标struc...原创 2016-11-03 23:27:19 · 527 阅读 · 0 评论 -
算法——约瑟夫环问题
//问题描述:编号是1,2,……,n(n>0)的n个人按照顺序时针方向围坐一圈,//每个人持有一个正整数密码。开始时任选一个正整数作为报数上限值m,//从某个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,报m的人出列//将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去//直到所有人全部出列为止。设计一个程序来求出出列顺序,并输出结果。#i...原创 2016-06-05 23:14:36 · 537 阅读 · 0 评论 -
算法——龙贝格算法
#include<stdio.h>#include<math.h>#define eps 1e-5double sum=0.0;double T[100][100];double f(double x){ double y; if(x==0) y=1; else y=sin(x)/x; ret...原创 2016-05-26 23:57:13 · 2765 阅读 · 2 评论 -
链表相关——单链表的逆置和分奇偶
#include <stdio.h>#include <stdlib.h>#include <malloc.h>typedef struct node{ int data;//数据域 struct node *next;//指针域}slink;//单链表类型名slink *createslink(int n){ int...原创 2016-05-16 01:35:26 · 1443 阅读 · 0 评论 -
链表相关——单链表求并集
//单链表求并集,不开辟新空间//思路,每取一个b中的元素,就跟a中所有元素进行比较,用pc接入与a中元素不同的b中元素#include <stdio.h>#include <stdlib.h>#include <malloc.h>typedef int ElemType; //根据实际问题,定义数据类型typedef struct node{...原创 2016-05-15 01:47:28 · 3384 阅读 · 5 评论 -
链表相关——单链表合并操作
//将两个带头结点的非递减有序单链表a,b合并成一个非递减的有序单链表//要求结果使用原来的链表的存储空间,不另开辟空间,允许有重复的数据#include <stdio.h>#include <stdlib.h>#include <malloc.h>typedef int ElemType; //根据自己的需要,定义自己需要的类型typedef...原创 2016-05-14 23:51:54 · 861 阅读 · 0 评论 -
链表相关——单链表的操作
#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef int ElemType; //定义数据类型typedef struct node{ ElemType data; //数据域 struct node * next; //指针域}slink; /...原创 2016-05-13 01:38:48 · 482 阅读 · 0 评论 -
顺序表——基本操作
#include <stdio.h>#include <malloc.h>#define INITSIZE 100 //顺序表储存空间的初始分配量typedef int ElemType; //在实际问题中,根据需要定义所需的数据类型typedef struct{ ElemType * data; //储存空间基地址 int length; ...原创 2016-05-10 01:00:27 · 727 阅读 · 0 评论 -
算法——改进欧拉算法
#include <stdio.h>#include <math.h>#include <stdlib.h>double xi[100];double yi[100];/*double f(double x,double y){ double z; z=-x*(y*y); return z;}*//*double f(d...原创 2016-05-27 14:20:48 · 3048 阅读 · 0 评论 -
递归——Hanoi塔问题
前言:有接近两个多月没有写博客了,上一写博客还是放暑假的时候8月16号,进入大三以来,自己对放松了自己好多,都不怎么搞技术了,不过我是不会这样一直放纵自己的,是时候搞下技术了,要好好珍惜大学时光。hanoi塔问题 算法思路:我们可以把这个问题分成两部分,一部分是第n个盘子,一部分是前n-1个盘子 (相当于一个盘子),也就是说现在就相当于只有两个盘子在A上,那么我们只...原创 2016-10-22 21:49:00 · 1075 阅读 · 0 评论 -
动态规划——解决多段表问题
代码如下:#include<stdio.h>int main(){ int i,j,r,x,y,k,n,t; int V[50][50][3]; int a[50]; k=5;//表示有5层 n=12;//表示有12个顶点 a[0]=0; a[1]=1; a[2]=5; a[3]=8; ...原创 2016-11-05 02:06:27 · 254 阅读 · 0 评论 -
BFS(广度优先搜索算法)——最短路线问题
</pre><pre>#include<stdio.h>/*有8个城市,编号分别为0~7,求从0号城市到7号城市的最短路线*/int jz[8][8]= { {0,1,1,1,0,1,0,0}, {1,0,0,0,0,1,0,0}, {1,0,0,1,1,0,0,0}, ...原创 2016-11-08 23:49:46 · 4922 阅读 · 0 评论 -
贪心——加油问题
【汽车加油问题】一辆汽车加满油后可以行驶n千米。旅途中有k个加油站。若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。 数据输入:由文件input.txt 给出输入数据。第一行有2个正整数n和k,表示汽车加满油后可行驶nkm,且旅途中有k个加油站。接下来1行中,有k+1个整数,表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发地,汽车已加满油。第k...原创 2016-10-28 14:48:20 · 5804 阅读 · 0 评论 -
BFS(广度优先算法)——判断无向简单图中任意两点是否连通
#include<stdio.h>struct{ int city,pre;} sq[100];int jz[50][50];int qh,qe,n,visited[100];void out(int qe)//输出结果{ if(sq[qe].pre==0) printf("%d",sq[qe].city); else...原创 2016-11-17 21:36:39 · 15193 阅读 · 1 评论 -
动态规划——多段图优化求解
#include<stdio.h>int V[50][50];int a[50],b[20];int static k,n,m;void createGraph(){ int i,j,t,s; printf("请输入结点数:"); scanf("%d",&n); for(i=0; i<=n; i++) for...原创 2016-11-14 21:56:00 · 1753 阅读 · 1 评论 -
DFS(深度优先算法)——走迷宫问题
/*走迷宫问题*/#include<stdio.h>int maze[50][50];int fx[4]= {1,-1,0,0};int fy[4]= {0,0,-1,1};int n,pos=1;void createGraph(){ int i,j; printf("创建邻接矩阵如下:\n"); for(i=1; i<=n; i++...原创 2016-11-18 23:21:45 · 2200 阅读 · 0 评论 -
Java小实例——实现回溯策略
问题:迷宫问题:起始是迷宫的左上角(0,0),目的位置是迷宫的右下角(6,12)。其中1代表通道,0代表墙壁。只允许进行垂直或者水平移动,禁止对角线移动。例子:1 1 1 0 1 1 0 0 0 1 1 1 11 0 1 1 1 0 1 1 1 1 1 0 11 0 0 0 1 0 1 0 1 0 1 0 11 0 0 0 1 1 1 0 1 0 1 1 11 1 1 ...原创 2019-02-14 15:41:59 · 933 阅读 · 1 评论 -
算法——Runge_Kutta算法
#include <stdio.h>#include <math.h>#include <stdlib.h>double xi[100];double yi[100];/*double f(double x,double y){ double z; z=-x*(y*y); return z;}*//*double f(d...原创 2016-05-27 14:22:46 · 2148 阅读 · 0 评论