算法训练 Lift and Throw 问题描述   给定一条标有整点(1, 2, 3, …)的射线. 定义两个点之间的距离为其下标之差的绝对值.   Laharl, Etna, Flonne一开始在这条射线上不同的三个点, 他们希望其中某个人能够到达下标最大的点.   每个角色只能进行下面的3种操作, 且每种操作不能每人不能进行超过一次.   1.移动一定的距离   2.把另一个角色高举过头   3.将举在头上的角色扔出一段距离   每个角色有一个movement range参数, 他们只能移动到没有人的位置, 并且起点和终点的距离不超过movement range.   如果角色A和另一个角色B距离为1, 并且角色B没有被别的角色举起, 那么A就能举起B. 同时, B会移动到A的位置,B原来所占的位置变为没有人的位置. 被举起的角色不能进行任何操作, 举起别人的角色不能移动.同时, 每个角色还有一个throwing range参数, 即他能把举起的角色扔出的最远的距离. 注意, 一 继续阅读 >>


陈文浩 17/12/10 15:59:37
#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 = 继续阅读 >>


陈文浩 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}, 继续阅读 >>


陈文浩 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,直到遇到左括号为止,此时将这一 继续阅读 >>


陈文浩 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.Workb 继续阅读 >>


陈文浩 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_ 继续阅读 >>


陈文浩 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); 继续阅读 >>


陈文浩 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 *STA 继续阅读 >>


陈文浩 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 = 继续阅读 >>


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


陈文浩 17/10/25 22:13:20