
九度OJ
晃晃--
这个作者很懒,什么都没留下…
展开
-
九度1011 最大连续子序列和
给一序列,求最大连续子序列的和,以及这个序列的开始元素和最后一个元素,若都为负数,和为0,输出原序列第一个和最后一个元素思路:d【i】存放以第i个元素为结束点的连续序列的和,d【0】=a【0】,顺推(动态规划思想),最后找出d中最大的即可;first【i】存放以第i个元素为结束点时,此序列的开始元素的下标;#includeint a[10000],d[10000],fir原创 2013-09-21 18:14:10 · 1131 阅读 · 0 评论 -
九度1014 排名 结构体排序
结构体排序当分数相同时,按考号(字符串)升序排序字符串排序时,在cmp函数里,用strcmp( )来比较两字符串大小strcmp(a, b ) > 0时,a > bstrcmp(a, b ) = 0时,a = bstrcmp(a, b ) #include#includetypedef struct{ char id[25]; int s原创 2013-09-21 18:14:08 · 868 阅读 · 0 评论 -
题目1480:最大上升子序列和
不用多说了,老套路#includeint a[1005],d[1005];int main(){ int n,i,j,max; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) scanf("%d",&a[i]); d[0]=a[0]; for(i=1;i<n;i++) {原创 2013-09-21 18:13:27 · 1458 阅读 · 0 评论 -
九度1012畅通工程
求需要加几条边可以让图变得连通求出连通分量个数,需要的边数即连通分量数减一#include#includeint map[1000][1000];int n,v[1000];void dfs(int k){ int i,j; v[k]=1; for(i=1;i<=n;i++) if(!v[i]) { if(map[k][i]||map[i][k])原创 2013-09-21 18:12:57 · 1180 阅读 · 0 评论 -
题目1131:合唱队形
求以a[i]为结束结点时的最长上升序列长度,保存在d1[i]中,从前向后更新再求 a[i]为开始结点时最长下降序列长度,保存在d2[i]中,从后向前更新#includeint a[102],d1[102],d2[102];int main(){ int n,i,j,max; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i+原创 2013-09-21 18:12:24 · 980 阅读 · 0 评论 -
题目1123:采药
方法一原创 2013-09-21 18:10:17 · 846 阅读 · 0 评论 -
九度1009判断两个序列构成的两个二叉排序树是否相同
此程序中,实现用递归构造二叉排序树,以前递归一直构造不成功,仔细看看书,发现是函数传送参数的时候,不能传送指向结点的指针,若这样只能改变此指针指向内容,而无法改变此指针,但是递归构造时,当函数接受的参数为NULL时,要分配空间,把这个新空间的指针值赋给传过来的指针,所以传送参数时要传指针的指针,这样就不仅可以改变指针指向的能容,也能改变这个指针,这样就顺利生成新的结点。#include#原创 2013-09-21 18:14:39 · 2614 阅读 · 0 评论 -
北大拦截导弹
求最长不升子序列#includeint main(){ int a[30],d[30],i,j,max,n; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) scanf("%d",&a[i]); d[0]=1; for(i=1;i<n;i++) { d[i原创 2013-09-21 18:11:35 · 834 阅读 · 0 评论 -
九度1008最短路
dijkstra算法实现#include#define MAX 900000000typedef struct NODE{ int dis; int cost;}node; node map[1005][1005];node d[1005];int v[1005];void init(){ int i,j; for(i=0;i<1005;i++)原创 2013-09-21 18:10:51 · 1173 阅读 · 0 评论 -
九度1078 前序和中序建二叉树
九度1078 前序和中序建二叉树原创 2013-09-21 18:15:59 · 1167 阅读 · 0 评论