#include<stdio.h> #define MAX 6 int n = MAX; int cost[][MAX] = { { 0, 50, 10,1000, 45,1000}, {1000, 0, 15,1000, 10,1000}, { 20,1000, 0, 15,1000,1000}, {1000, 20,1000, 0, 35,1000}, {1000,1000, 30,1000, 0,1000}, {1000,1000,1000, 3,1000, 0} };//各个点的值 int distance[MAX][MAX]={0};//最终距离 void allcosts(int cost[][MAX],int distance[][MAX],int n); int main() { allcosts(cost,distance,n); for(int i = 0;i < n;i++) { 继续阅读 >>


陈文浩 17/12/04 21:24:51
思路: ①随意选择一个点v,然后用distance数组记录起始点v到所有点的距离 ②然后在distance数组中找到起始点v到哪一个点的距离最短,以这个点u为中介,found[u]=1,证明集合中已经有这个点,证明该点走过 ③使用choose函数通过循环,可以知道哪一个点到起始点最短,返回该点的索引u ④然后再以u这个点开始,去没有走过的点w(found数组中没有标记为1的点)一一试探,只要distance[u]到某一点w的距离(即distance[u]+cost[u][w] )小于w到起始点的距离(distance[w]),则修改distance[w],即distance[w]是到起始点v的最小距离 #include<stdio.h> #define MAX 6 int cost[][MAX] = { { 0, 50, 10,1000, 45,1000}, {1000, 0, 15,1000, 10,1000}, { 20,1000, 0, 15,1000, 继续阅读 >>


陈文浩 17/12/04 20:47:41
题描述   输入一个只包含加减乖除和括号的合法表达式,求表达式的值。其中除表示整除。 输入格式   输入一行,包含一个表达式。 输出格式   输出这个表达式的值。 样例输入 1-2+3*(4-5) 样例输出 -4 数据规模和约定   表达式长度不超过100,表达式运算合法且运算过程都在int内进行。 这个题的思路就是先把中缀表达式转化为后缀表达式,然后用后缀表达式计算出式子的值 1.将中缀表达式转换为后缀表达式的方法: (1) 初始化两个栈:运算符栈S1和储存中间结果的栈S2; (2) 从左至右扫描中缀表达式; (3) 遇到操作数时,将其压入S2,这里由于运算数可能大于10,所以如果数字后面一个符号是运算符,则将‘#’入S2栈充当分割线; (4) 遇到运算符时有三种情况: (4-1) 三种情况下直接入S1栈①S1为空②运算符为‘(’③运算符优先级比S1栈顶运算符的高; (4-2)如果右括号“)”,则依次弹出S1栈顶的运算符,并压入S2,直到遇到左括号为止,此时将这一对括号丢弃; (4-3) 若运算符优先级小于或等于S1栈 继续阅读 >>


陈文浩 17/11/28 21:15:07
说明 2007版以前的Excel(xls结尾的),需要使用xlrd读,xlwt写。 2007版以后的Excel(xlsx结尾的),需要使用openpyxl来读写。 pypi的地址: https://pypi.python.org/pypi/xlwt https://pypi.python.org/pypi/xlrd https://pypi.python.org/pypi/openpyxl openpyxl文档地址: https://openpyxl.readthedocs.io/en/latest/changes.html 举个栗子 # 读写2003 excel import xlrd import xlwt # 读写2007 excel import openpyxl #!/usr/bin/env python # coding=utf-8 import xlrd import xlwt def write03Excel(path): wb = xlwt.Workbook() #类的实例化 sheet = 继续阅读 >>


陈文浩 17/11/06 23:23:54
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct node* tree_pointer; typedef struct node{ tree_pointer left_child; tree_pointer right_child; char data; }tree; int find_index(char* arr,char data);//找到对应值在数组的索引 void create_tree(tree **node,char *postorder,char *inorder); int num; int Index;//全局变量 void pre_order(tree *what) { if (what == NULL) return; printf("%c ", what->data); pre_order(what->left_child); 继续阅读 >>


陈文浩 17/11/04 21:15:30
#include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct node* tree_pointer; typedef struct node{ tree_pointer left_child; tree_pointer right_child; char data; }tree; int find_index(char* arr,char data);//找到对应值在数组的索引 void create_tree(tree **node,char *preorder,char *inorder); int num; int Index=1;//全局变量 void post_order(tree *what) { if (what == NULL) return; post_order(what->left_child); post_order(what->right_ch 继续阅读 >>


陈文浩 17/11/04 20:42:12
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<assert.h> #define MAX 100 typedef struct node* tree_pointer; typedef struct node{ char data; tree_pointer left_child,right_child; }BiTree; void CreateBiTree(BiTree **root); void PreOrder(BiTree *root); void InOrder(BiTree *root); void PostOrder(BiTree *root); void OPreOrder(BiTree *root); void OInOrder(BiTree *root); void OPostOrder(BiTree *root); BiTree *STACK[MAX]; void push(int *top,B 继续阅读 >>


陈文浩 17/11/02 21:57:02
#include<stdio.h> #include<stdlib.h> #include<time.h> int RANDOMIZED_SELECT(int a[],int p,int r,int i); int RANDOMIZED_PARTITION(int a[],int p,int r); int PARTITION(int a[],int p,int r); void swap(int *a,int *b); int RANDOM(int p,int q); int main() { int a[] = {10,9,8,7,6,5,4,3,2,1}; int i = 3; printf("第%d小:%d\n",i,RANDOMIZED_SELECT(a,0,9,i)); return 0; } void swap(int *a,int *b) { int temp; temp = *a; *a = *b; *b = temp; } int RAND 继续阅读 >>


陈文浩 17/10/26 22:52:27
被这个稀疏矩阵折磨了很久,看了将近一个半礼拜,看的我很想撕书。 这个是程序思想是和数据结构(c语言版)机械工业出版社的学习的,书 代码讲解不是很详细,搜了网上很多代码,都是抄了一下,草草注释,在我自己写的时候发现书上的代码是有问题的。 书上p48,new_b使用int类型,但是转置是term类型,而且转置都是用了一位数组。 还有就是书上的边界条件处理的是有问题的,如果原封不动的写,最后结果会是两行叠加的答案,我写了两种方法 书上显然是错的,查了很多中文版本,代码都是错的,没有查到英文版,不知道是什么状况,有哪位看到英文版的代码,请给我发一下原版,不胜感激!!! 都说国外书很好,但是我觉得还是自己多动手,不能光看,尽信书不如无书,这个题也警示我要多动手!!! 大家只要耐心的看程序下面的图就可以大概了解过程,过程图是我自己画的,画的不是太好,如果大家觉得这篇博客可以帮到你,大家可以随意转载,能帮到大家非常开心,写的不对的地方希望大家提出来,希望和大家一起进步!!! #include<stdio.h> #include<string. 继续阅读 >>


陈文浩 17/10/25 22:13:20
#include<stdio.h> #include<string.h> typedef struct{ int clo,row; int value; }three; three arr1[100]; three arr2[100]; int top1=0,top2=0;//记录各个三元组的个数 int zero=0; int sum_clo=0,sum_row=0; int matrix1[21][21]; int matrix2[21][21]; void add(three *ar1 ,three *ar2 ); void substract(three *ar1,three *ar2); void reverse(three *ar1,three *ar2); int main() { int row1,clo1; int row2,clo2; printf("请输入你的矩阵的行数和列数:"); scanf("%d%d",&sum_row,&sum_clo); 继续阅读 >>


陈文浩 17/10/24 22:46:35