小程序+数据结构与算法
_yxy_
没有什么解决不了的问题,努力就好!
展开
-
魔术师发牌问题
先搞清楚题意:注意按顺序每翻到一张牌放到桌子上,不在手中了,其实是循环链表的问题,可以在纸上模拟一下就可以得到牌开始的顺序。原创 2016-10-10 21:01:18 · 449 阅读 · 0 评论 -
图(邻接矩阵存储)的广度优先遍历算法
//邻接矩阵的广度遍历算法void BFSTraverse(MGraph G){ int i, j; Queue Q; for (i = 0; i < G.numVertese; i++) { visited[i] = FALSE; } initQueue(&Q); for (i = 0; i < G.numVertes; i++) { if (!visited[i])原创 2017-02-13 20:57:02 · 3445 阅读 · 0 评论 -
马踏棋盘算法(骑士周游问题)
将马随机放在国际象棋的8×8棋盘的某个方格中,马按走棋规则进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格。代码:#include "stdafx.h"#include #include #define row 8#define col 8int cnt = 0;int templater[row] = { - 1, - 2, - 2, - 1, 1, 2,原创 2017-01-31 15:46:11 · 4355 阅读 · 0 评论 -
线索二叉树的代码实现
用二叉链表建立二叉树时,会造成一些空指针浪费空间,中序遍历的方式可以节省“^”所浪费的空间,利用空指针来记录前驱后继,可以得到线索二叉树。下面是小甲鱼数据结构与算法视频的线索二叉树的实现:实现了线索二叉树的前序前序创建,中序遍历线索化和用非递归的方式线索化下图是一个例子,pre指针指向树,右指针指向中序遍历的最后一个节点#include "stdafx.h" #includ原创 2016-12-19 22:37:31 · 836 阅读 · 0 评论 -
C++输入输出两个小程序
来自《小甲鱼C++快速入门》:问题1:向用户提出一个“”“Y/N”问题,然后把用户输入的值赋给answer变量代码:#include int main(){ char answer; std::cout << "请问可以格式化您的硬盘吗??[Y/N]\n"; std::cin >> answer; switch (answer) { case'Y': case'原创 2016-12-23 20:44:31 · 519 阅读 · 0 评论 -
哈夫曼编码的C语言实现
代码来自于《小甲鱼C++快速入门》主程序main.cpp#include "stdafx.h"#include #include "huffman.h"int main(){ htTree *codeTree = buildTree("I love wwwwwwwwwFishC.com!");//建立哈夫曼树 hlTable *codeTable = buildTable(co原创 2017-01-02 22:44:08 · 19192 阅读 · 4 评论 -
C语言与C++文件的I/O操作
以下代码摘自《小甲鱼C++快速入门》视频教程C语言:filecopy.c;#include #include int main(int argc, char* argv[]){ FILE *in, *out; int ch; if (argc != 3) { fprintf(stderr, "输入形式:fileCopy 源文件名 目标文件名\n"); exit(EX原创 2016-12-21 20:51:01 · 464 阅读 · 0 评论 -
关于cin.width()和cout.width()
一个有趣的程序:#include "stdafx.h" #include using namespace std;int main(){ int width = 4; char str[20]; cout << "请输入一段文本:\n"; cin.width(5); while (cin >> str) { cout.width(width++); cout <<原创 2016-12-15 21:27:09 · 6576 阅读 · 2 评论 -
用户输入一串整数和任意数目的空格,程序自动对所有的整数进行求和
要求:编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行中的任何位置。当用户按下键盘上的“Enter”键时,数据输入结束。程序自动对所有的整数进行求和并打印出结果。C语言实现:#include "stdafx.h" #include #include int main(){ int i; char ch; int sum=0;原创 2016-12-15 21:17:27 · 3861 阅读 · 0 评论 -
KMP算法
Brute Force算法:朴素的模式匹配算法,最坏的情况要进行M*(N-M+1)次比较KMP算法:三个人的研究成果,避免重复遍历和不必要的回溯,核心是next数组,当模式串失配时,指导下一步模式串的第几号元素去匹配。问题是由模式串决定,不是由目标串决定参考链接:http://blog.csdn.net/jiajiayouba/article/details/9178789代码:原创 2016-12-08 21:33:38 · 197 阅读 · 0 评论 -
汉诺塔问题
#include "stdafx.h" #include using namespace std;void move(int n, char x, char y, char z);void main(){ int n; cout << "请输入汉诺塔层数:"; cin >> n; move(4,'x','y','z'); system("pause");}//目标是把原创 2016-11-22 21:13:53 · 200 阅读 · 0 评论 -
二叉树的建立和遍历
结果:代码:// testlleet.cpp : 定义控制台应用程序的入口点。#include "stdafx.h" #include #include #include typedef char ElemType;typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild;}BiTN原创 2016-12-12 21:56:49 · 289 阅读 · 0 评论 -
八皇后问题
代码:// testlleet.cpp : 定义控制台应用程序的入口点。#include "stdafx.h" #include using namespace std;bool notDanger(int row, int col, int(*chess)[8]){ bool flag1 = 1, flag2 = 1, flag3 = 1, flag4 = 1;\ //判原创 2016-12-03 20:56:06 · 205 阅读 · 0 评论 -
约瑟夫问题
代码:#include "stdafx.h"#include using namespace std;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};void main(){ ListNode* head = new ListNode原创 2016-09-28 21:11:42 · 270 阅读 · 0 评论 -
Leetcode 70. Climbing Stairs
题目链接:https://leetcode.com/problems/climbing-stairs/题目描述:You are climbing a stair case. It takes n steps to reach to the top.Each time you can either climb 1 or 2 steps. In how many distinc原创 2016-10-12 21:03:47 · 177 阅读 · 0 评论 -
拉丁方阵问题
解析:用循环链表即可,一行构造一个链表,变换开始依次输出// testlleet.cpp : 定义控制台应用程序的入口点。#include "stdafx.h" #include using namespace std;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL原创 2016-10-12 20:33:40 · 1033 阅读 · 0 评论 -
最大子序列,最长递增子序列,最长公共字串,最长公共子序列,字符串编辑距离
转自博客园 http://www.cnblogs.com/zhangchaoyang/articles/2012070.html最大子序列最大子序列是要找出由数组成的一维数组中和最大的连续子序列。比如{5,-3,4,2}的最大子序列就是 {5,-3,4,2},它的和是8,达到最大;而 {5,-6,4,2}的最大子序列是{4,2},它的和是6。你已经看出来了,找最大子序列的方法很简单转载 2017-04-02 12:02:52 · 360 阅读 · 0 评论