自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (2)
  • 收藏
  • 关注

原创 Test

test

2016-04-25 22:50:45 307

原创 Java初始化的一些知识

写了快两年的Java了,断断续续也看了一些书,但是似乎还是没有很深入理解。今天写代码的时候突然想到一个问题,Java继承的方法是如何初始化的,一时间感觉到很模糊,实在惭愧。趁着今天不加班,网上找了些资料。废话不多说,上代码:package test;public class Child extends Father { int k = prt("Child member v

2016-01-20 22:38:42 428

原创 依旧排列组合问题

public static void arragments(int[] a, int first, int num) { if(num == 0) { for(int i : a) { System.out.print(i); } System.out.println(); return; } for(int i = f

2013-10-08 15:47:12 541

原创 树的层次遍历

void TraverseLevel(Node* Node, int depth){ if(Node == NULL) { return; } else { if(depth == 0) { printf("%d", Node->value); } else { TraverseLevel(Node->left, dept

2013-10-07 16:26:36 423

原创 整数的素数和分解问题

歌德巴赫猜想说任何一个不小于6的偶数都可以分解为两个奇素数之和。 对此问题扩展,如果一个整数能够表示成两个或多个素数之和,则得到一个素数和分解式。 对于一个给定的整数,输出所有这种素数和分解式。 注意,对于同构的分解只输出一次(比如5只有一个分解2 + 3,而3 + 2是2 + 3的同构分解式 )。 例如,对于整数8,可以作为如下三种分解: (1) 8 = 2 + 2 + 2 + 2 (2

2013-10-05 18:02:12 1092

原创 谷歌面试题

1,正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项,例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12 (1)、设计一个函数void generate(int a,int b,int N ,int * Q)计算Q的前几项。Java实现:public static void findNum(int a, int b,

2013-10-04 20:42:01 537

原创 长度为N的数列中寻找和为N+1的数对

一个整数数列,元素取值可能是1~N(N是一个较大的正整数)中的任意一个数,相同数值不会重复出现。 设计一个算法,找出数列中符合条件的数对的个数,满足数对中两数的和等于N+1。 复杂度最好是O(n),如果是O(n2)则不得分。public static void findNumPairs(int a[]) { BitSet bitSet = new BitSet(); fo

2013-10-04 19:53:34 508

原创 n个骰子朝上面所有和的概率

动态规划思想:c[i][n]表示n个骰子和为i的组合次数。要注意的地方:c[i][1] = 1;c[i][i] = 1 (1程序中c[i]置0是为了处理c[i][i]以及累加 i #includeint FACE = 6;double c[500] = {1,0};void find(int number){ int i, j, k; for(i

2013-09-17 15:42:27 461

原创 华为2014机考样题及答案

初级题:从考试成绩中划出及格线 10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数;(2) 保证至少有60%的学生及格;(3) 如果所有的学生都高于60分,则及格线为60分 输入:输入10个整数,取值0~100 输出:输出及格线,10的倍数 public static int passLine(int[] in)

2013-09-15 11:00:33 1034

原创 华为机考(待续)

1.输入一串字符,只包含“0-10”和“,”找出其中最小的数字和最大的数字(可能不止一个),输出最后剩余数字个数。如 输入  “3,3,4,5,6,7,7”     输出   3public static int findLeft(String input) { String nums[] = input.split(","); int size = nums.lengt

2013-09-13 23:36:15 1146 2

原创 编辑距离

求两个字符串的最短编辑距离:s1 = "GUMBO";s2 = "GAMBOL";动态规划思想:c[i][j] = min( c[i-1][j] +1, c[i][j-1] +1, c[i-1][j-1] + cost)分别表示:删掉一个字符,增加一个字符,替换一个字符。#include char t[] = "GUMBO";char s[] = "G

2013-09-13 13:30:09 423

原创 堆排序

注意理解用数组表示堆以及运用好递归。 #include int a[] = {0,2,6,8,4,10};void swap(int* a, int i, int j){ int temp = a[i]; a[i] = a[j]; a[j] = temp;}void HeapAdjust(int* a, int i, int size){

2013-09-10 14:22:31 372

原创 一组百度笔试题

1. 有一箱苹果,3个一包还剩2个,5个一包还剩3个,7个一包还剩2个,求N个满足以上条件的苹果个数。#include void find(int n){ int i; for(i = 0; i <= n; i++) { if((i - 2) % 3 == 0 && (i - 3) % 5 == 0 && (i - 2) % 7 ==

2013-09-08 20:56:20 603

原创 偶数分解成两个素数的和

#include#define N 1000000 int map[N] = {0};int isPrimary(int n){ int i; if(n == 2) { return 1; } for(i = 2; i*i <= n; i++) { if(n % i == 0) { return 0; } } return 1;}void i

2013-09-08 13:16:51 2550

原创 将一个数分解为素数乘积

#include void find(int n){ int i, k; printf("%d=",n); int j = 0; int isPrimeNum; for(i = 2; i <= n; i++) { if(n % i == 0) { isPrimeNum = 0; for(k = 4; k <= i; k++) { if( i %

2013-09-07 13:03:17 2685 1

原创 求魔术数

魔术定义:整数N以基数B表示,如21以基数3表示为210,那么21是基数3的一个魔术,210三个位的值都不一样。设计函数,输入参数N和B(B介于2到10之间),返回是否为魔术。 #includechar c[100];int map[10] = {0};int isMagicNum(int N, int B){ int i = 0,j, result = 1;;

2013-09-04 12:54:44 744 4

原创 归并排序vs归并排序

思路:利用递归,用临时数组保存中间子排序段,再将子排序段归并到原数组,依次递归。 #includeint temp[100];void Merge(int* a, int low, int high ){ int mid, i, j, k; mid = (low + high) / 2; for(i = low,j = mid + 1, k

2013-09-04 10:39:54 477

转载 N个数顺序进栈,出栈的情况

http://blog.csdn.net/zyearn/article/details/7758716 近日在复习数据结构,看到栈的时候,发现1个元素进栈,有1种出栈顺序;2个元素进栈,有2种出栈顺序;3个元素进栈,有5种出栈顺序,那么一个很自然地问题就是n个元素进栈,共有多少种出栈顺序?说来惭愧,以前学数据结构的时候竟然没有考虑过这个问题。最近在看动态规划,所以“子问题”这3

2013-09-03 15:20:27 1272

原创 大数相乘

要点:1,数字用字符串表示2,纵位相乘,用一个临时整形数组保存中间变量3,处理整形数组中间结果的进位,将整形数组的结果转化为数组 #includevoid multiply(char* a, char* b, char* s){ int i, j,*c; int aLen = strlen(a); int bLen = strlen(b); c =

2013-09-03 14:50:19 467

原创 有序数组转二叉排序树

typedef struct node{ int data; struct node* left; struct node* rigth;}Node,*BTree;void buildBiTree(BTree &T,int* a, int start, int end){ if(start > end) return; int mid = start + (en

2013-09-03 12:49:15 868

原创 寻找最长递增子序列

思路:动态规划解题,记当前最长递增子序列的最后一个数为a[i],长度为c[i];记a[j]为a[0]到a[i]中所有以j结尾的递增子序列,如果a[i+1].>a[i],,则c[i+1] = MAX(c[i+1],c[j]+1);#includeint a[8] = {1,2,-2,3,2,3,4,5}; int c[100] = {1};int max(int a,

2013-09-02 21:28:56 389

原创 递归练习

#includeint count = 0;int find(int n){ if(n == 1) { return count; } if(n % 2 == 0) { n = n / 2; count++; find(n); } else { if(n > 1) { n = n - 1; count++; find(n);

2013-09-01 14:19:13 373

原创 阶乘结果零的个数

#include int cal0(int N){ int i, count = 0; for(i = 0; i <= N; i++) { int j = i; while(j >=5 && j % 5 == 0) { count++; j = j / 5; } } return count;}int main(){ int r = cal0(

2013-08-31 21:33:11 498

原创 最大堆和最小堆找中位数

#include #include using namespace std;#define N 1000int maxHeap[N + 5];int minHeap[N + 5];int maxSize = 0;int minSize = 0;int deleteMaxHeap(){ int parent, child, value, target; maxSize--;

2013-08-27 20:54:31 1492

转载 蓄水池算法-如何从未知或者很大样本空间随机地取k个数

先把前k个数放入蓄水池,对于第 i>=k+1,我们以 k/i 概率决定是否要把它换入蓄水池,换入时随机的选取一个作为替换项,这样一直做下去,对于任意的样本空间n,对每个数的选取概率都为k/n。也就是说对每个数选取概率相等。init a reservoir with the size kadd the first k elements into the reservoirfor i

2013-08-25 19:29:28 802

原创 谷歌笔试题-背包问题

将一个较大的钱,不超过1000000(10^6)的人民币,兑换成数量不限的100、50、10、5、2、1的组合。此题考查的是一个比较简单的完全背包问题,但是有一个陷阱,注意数据的取值范围,整型数会溢出。#include #define N 1000005long long c[N];int change[] ={1,2,5,10,50,100};long long fi

2013-08-25 13:14:35 643

原创 谷歌笔试题-去除连续空格并翻转字符串

#include char s[] = "abc efg hij";void deleteBlanks(char* s){ char* i = s; char* j = s; int isFirstBlank = 1; while(*i != '\0') { if(*i != ' ') { *j++ = *i++; isFirstBlank =

2013-08-25 12:45:40 604

原创 位操作-找到数组中只出现一次的数字

题目一:数组中数字都两两相同,只有一个不同,找出该数字:int findUnique(int* a, int len){ int i = 1; int temp = a[0]; for(; i < len; i++) { temp = temp ^ a[i]; } printf("%d ", temp);} 题目二:数组中数字两两相同,有两个不同,找出这两个:

2013-08-25 10:43:06 638

原创 将数组中奇数和偶数分区

partition函数 #includeint a[8] = {1,2,3,4,5,6,7,8};void swap(int* a, int i, int j){ int temp = a[i]; a[i] = a[j]; a[j] = temp;}void partion(int* a, int len){ int i = len, j

2013-08-21 16:49:02 465

原创 找出旋转数中的第一个数

可以用递归也可以用二分查找 #includeint a[5] ={3,4,5,1,2};int findMin(int* a,int len){ return(helper(a, 0 , len-1));}int helper(int* a, int start, int end){ if(start == end || a[start] < a

2013-08-21 16:20:37 380

原创 用递归颠倒一个栈

public void reverse(Stack stack){ if(stack.size() == 1){ return; } int a = (Integer) stack.pop(); reverse(stack); stack.push(a); }

2013-08-20 15:12:04 436

原创 求两个字符串的最长公共子串(包括连续和非连续)

典型的动态规划问题,非连续有点问题。#include #define N 100int c[N];int dp[N+5][N+5];char* a="hijdefg";char* b ="hfghijc";int LCS(char* a, int aLen, char* b, int bLen){ int maxLen = 0; int pos = 0;

2013-08-20 15:03:28 717

原创 将数组里面偶数和奇数分区

#include int a[7] = {1,2,3,4,5,6,7};void partionOddAndEven(int* a, int len){ int start = 0; int end = len; int temp; while(start < end){ if(start < end && a[start] % 2 == 1){ st

2013-08-19 16:17:32 550

原创 N对括号的合法组合

递归实现,需要注意一下几点:1. 递归终止条件2. 递归递推关系式 这里实际上是一个排列问题,只是排列需要满足条件在每一次递归调用时左括号数不能少于右括号数。还有一点需要特别注意,当推出递归调用时相应的变量要替换掉旧的值,相当于一个出栈的过程。 #include#define N 20char* output[N];int sum = 0;int

2013-08-19 14:33:39 687

原创 寻找最长递增子序列

#includeint a[8] = {1,2,1,3,5,6,7,8};int findMaxAsc(int* a, int len, int index){ if(index == len || a[index] >= a[index + 1]){ return 1; } return 1+findMaxAsc(a,len,index+1);}in

2013-08-19 12:00:44 386

原创 从1到n的数中找若干个数使其和为m

#include#define N 100int flag[N];void print(int* flag){ int i = 0; for(; i < N; i++){ if(flag[i] == 1){ printf("%d ",i+1); } } printf("\n");} void findSum(int m, int n, int* flag){

2013-08-18 19:53:31 1519

原创 Judging if an array is ascendingin a recursion way

int b[8] = {'3','2','3','4','5','6','7','8'};int isAsc(int* b, int len){ if(len == 0){ return 1; } if(b[len] >= b[len-1]){ return isAsc(b,len-1); }else{ return -1; } }int main(){ i

2013-08-18 15:12:48 369

原创 Delete numbers in a string

#includechar a[8] = {'a','d','c','1','2','e','3','a'};void deleNum(char* a, int len){ char*p = a; char*q = a; int i =0; for(; i < len; i++){ if(a[i] >='0' && a[i] <= '9'){ p++; }else{

2013-08-18 14:49:14 411

原创 Reverse all words in a string

For example:input "I am a student." , output "student. am I". Be careful with the boundary.#includechar input[13] = {'I',' ','a','m',' ','s','t','u','d','e','n','t','.'};void reverseAll(char* in

2013-08-17 15:22:00 406

原创 Transform String to Int

#includechar str[7] = {'-','1','2','3','4','a','1'};int isValid = -1;int isOverflow = -1;int stringToInt(char* str, int len){ int isPositive = 1; int pos = 0; int sum =0; if(str == NULL){

2013-08-17 14:40:18 467

java编写的扫雷程序

这是java编写的一个扫雷程序,图片就是用windows自带的扫雷游戏里面的

2009-12-09

java聊天程序适合初学者

java 的一个聊天程序,里面有服务端和客户端。 这是本人学习java编程后结合教材编写的,可以在此基础上加以改进,适合初学者学习。

2009-12-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除