`
Dev|il
  • 浏览: 122160 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
文章列表
Description 有一天津津和乖乖正在一起玩耍,忽然乖乖拿出了一些牌对津津说,我们来一起玩一个游戏,怎么样?津津爽快的答应了。 乖乖说:“有N张牌,记为1,2,...,N,应当怎样排放,才能使:打开第一张是1,拿出1后,然后拿两张依次放在末尾;打开上面一张,刚好是2,拿出2后,再拿两张依次放在末尾;打开上面一张,刚好是3;如此继续下去,直至打开最后一张是N。” 请问原来这些牌是怎么排列的? Input (a.in)n的值是大于等于0而小于等于52的. Output (a.out)原来这些牌的排列 Sample Input 4 Sample Output 1 3 4 2 ...
【培训试题】排队打水问题(normal) Time Limit:1000MS  Memory Limit:65536K Total Submit:1262 Accepted:450 Description 有n个人排队到r个水龙头去打水,他们装满水桶的时间t1、t2………..tn为整数且各不相等,应如何安排他们的打水顺序才能使他们总共花费的时间最少? Input 第一行n,r (n<=500,r<=75) 第二行为n个人打水所用的时间Ti (Ti<=100); Output 最少的花费时间 Sample Input 3 2 1 2 3 Sample Ou ...
#include <stdio.h> #include <stdlib.h> //qsort函数 有四个参数 //1.代表排序数组的基址 //2.要排序数组的长度,也可以对这个数组的子序列进行排序 //3.数组元素的内存长度 //4.要进行比较的函数 int cmp(const void * a, const void *b) { return *(int *)a - *(int *)b; } int main() { int num[] = {-1, 0, -3, -5, 9 , 7, 5, 1}; qsort(num, 8, ...
【培训试题】合唱队形 Time Limit:1000MS  Memory Limit:65536K Total Submit:1335 Accepted:650 Case Time Limit:500MS Description N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK,  则他们的身高满足存在i(1<=i<=K)使得Ti<T2<......<Ti-1<Ti>Ti+1>......& ...
#include <stdio.h> #define MAXNUM 100 /* 函数功能:求解序列中的最大递增子序列的中包含的元素个数 算法说明:用到了动态规划问题,分解子问题b数组是用来存储每一个子序列中的最大递增子序列 求具有n个元素的序列中的最大递增自序列问题分解为 a[0], a[0] a[1], a[0] a[1] a[2], a[0] a[1] a[2]...a[m] m< n个子序列求其中的最大递增子序列 a[0]显然是递增的 所以b[0] = 1 a[0] a[1]求其中的最大递增自序列要依靠 a[0]如果 b[0] + 1 > ma ...
//栈的顺序表示实现 #include <stdio.h> #include <stdlib.h> //栈初始大小 #define STACK_INIT_SIZE 100 //栈的增长大小 #define STACKINCREMENT 10 #define OVERFLOW 0 #define ERROR 0 #define FALSE 0 #define TRUE 1 typedef int Status; typedef int SElemType; typedef int boolean; //栈的顺序定义 typede ...
//栈的顺序表示实现 #include <stdio.h> #include <stdlib.h> //栈初始大小 #define STACK_INIT_SIZE 100 //栈的增长大小 #define STACKINCREMENT 10 #define OVERFLOW 0 #define ERROR 0 #define FALSE 0 #define TRUE 1 typedef int Status; typedef int SElemType; typedef int boolean; //栈的顺序定义 typede ...
//单链表的创建 //算法思路:先建立一个空数据域的链表头指针 //从该节点依次插入新节点读入数据 //直至输入ctrl+z结束输入 #include <stdio.h> #include <malloc.h> typedef int ElemType; //定义数据链表结构 typedef struct Node{ int data; //数据域 struct Node *next; //指针域 }Node,*linkList; //创建链表 //头插法,先是一个空链表头指针,然后依次往后插入 linkList cre ...
//功能:顺序表的实现 //思路:初始化一个顺序表,如果n > INIT_LIST_SIZE 则重新分配内存空间 //反之,将元素存入顺序表 #include <stdio.h> #include <malloc.h> #define INIT_LIST_SIZE 2 #define ERROR 0 #define OK 1 #define LISTINCREMENT 10 #define SIZE sizeof(int) typedef int ElemType; typedef int Status; //顺序表定义 typ ...

快速排序

快速排序: 思想:就是以一个关键字为枢纽,让数组元素呈现一边小于枢纽,一边大于枢纽,然后然后对左边和右边进行递归进行相同操作,只到左右两边为有序序列,则结束 代码: #include <stdio.h> int rapidSort(int number[], int low, int high) { int pivotkey = number[low]; //关键字枢纽 while(low < high) { //从后往前遍历 while(low < high && pivotkey <= number[high] ...
堆排序: 堆定义:分大顶堆和小顶堆 大顶堆的父结点值比子结点大,并且左节点的值大于右结点的值,它可被视为一颗完全二叉树 树的深度为n 则 n-1层以前是被填满的,最后一层从一个结点的左子树开始填和数组对应 如数组 {0, 3, 5, 1, 8, 10, 9} number[0]不在排列范围内 下标从1开始,此时的堆结构为如图: 当用数组表示存贮了n个元素的堆时,叶子结点的下标从 n/2+1, n/2+2.....n 证明:当此为满二叉树的时候 且树的深度为k 则总共有 2^(k) - 1个结点, 由此可得前k-1层有2^(k - 1) - 1个结点 而总共有n个结点 则最后一层的结点树为 n ...
向前插入排序:(呵呵,不知道名字叫的对不对)    思想:就像从桌子上摸起扑克一样,摸起一张放到左手,然后把位置牌好,左手的扑克永远是排好序的    证明:开始左手是空的,从桌子上摸一张,显然此时左手上的牌是排好序的,然后摸起第二张,让第二张和第一张比较,如果第一张比第二张小,就把第一张和第二张交换,以此下去,左手的牌永远是排好序的 算法实现:(c语言实现,vc6编译通过) #include <stdio.h> int main() { int number[] = {3, 7, 1, 0, 11, 99}; int key; //保存关键字 int n = si ...
自己在dome一个小项目的时候,突发奇想,利用单例和工厂加上泛型的知识封装Po的CURD操作,直接上代码,文笔不好,呵呵,还请大家指教 接口规范,定义CURD操作 package edu.sasu.DAO; import java.util.List; /** * 所有实体类遵循的接口 * @author Administrator * * @param <T> * @param <ID> */ public interface BaseDao<T> { /** * 保存实体 * @param ...
Global site tag (gtag.js) - Google Analytics