笔试题
笔试题
FocusOneThread
ACL/NAACL/EMNLP审稿人,
金庸群侠传MOD大侠梦/曹操传MOD禾下霸业作者
展开
-
对称数
随机输入一个数,判断它是不是对称数(回文数)(如3,121,12321,45254)。不能用字符串库函数 #include "stdafx.h"#include unsigned char Sysmmetry(long n){long i,temp;i=n;temp=0;while(i){temp=temp*10+i%10;i/=10;转载 2012-03-04 14:50:59 · 1002 阅读 · 0 评论 -
数据结构,栈,顺序表示
进栈void push_seq(PSeqstack pastack,DataType x){ if(pastack->t >= MAXNUM-1)printf("Overflow! \n"); else { pastack->t=pastack->t+1; pastack->s [ pastack->t ]=x;转载 2012-06-06 20:10:56 · 580 阅读 · 1 评论 -
数据结构,栈,链接表示
创建一个空链栈PLinkStack createEmptyStack_link(void){PLinkStack plstack;plstack=(PLinkStack)malloc(sizeof(struct LinkStack));if(plstack!=NULL)plstack->top=NULL;elseprintf("Out of space!\n");r转载 2012-06-07 12:00:26 · 633 阅读 · 1 评论 -
树转化成二叉树
#include "stdafx.h" #include #include using namespace std; //树的节点 struct TreeNode { char element; int childNumbers;//孩子结点的个数转载 2012-12-25 14:54:05 · 823 阅读 · 0 评论 -
二叉树的周游,递归算法
先根次序void preOrder(BinTree t){if(t==NULL)return;visit(root(t));preOrder( leftChild(t) );preOrder( rightChild(t) );}对称序void inOrder(BinTree t){if(t==NULL)return;inOrder( leftChil转载 2012-06-05 21:41:47 · 1467 阅读 · 0 评论 -
求m,n的最大公约数
#include "stdafx.h"#include int main(){ int m=90; int n=120; int max=0;for (int i=1;i{ if(m%i==0&&n%i==0) max=i;}printf("%d",max); system("pause");}原创 2012-03-10 15:28:36 · 1044 阅读 · 0 评论 -
华为笔试题
写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。如:100个1是一个组合,5个1加19个5是一个组合。。。。 请用C++语言写。 number=0;for (x=0; xfor (y=0; yfor (z=0; zif ((x+2*y+5*z)==100)number++;cout转载 2012-03-03 20:55:48 · 539 阅读 · 0 评论 -
求集合的子集
输出n个元素的集合所有的子集,如{a,b,c}的子集就有{},{a},{b},{c},{a,b},{a,c},{b,c},{a,b,c}。 /*对于集合{A,B,C,D},它的非空子集个数为2×2×2×2-1,用二进制表示就是1111,我们规定从左到右第1位对应A,第2位对应B,第3位对应C,第4位对应D。如果相应位为1,则表示存在该字符,否则不存在该字符。如1101就表示{A转载 2012-12-24 19:37:19 · 708 阅读 · 0 评论 -
C语言atoi函数的实现
其中输入为0-9个数字符和表示正负的“-”组成long atoi(char X[ ]){long num=0;int i=1;if(X[0]!='-')num=X[0]-'0';while(X[i]!='\0')num=num*10+(X[i++]-'0'); //字符串未到尾,进行数的转换if(X[0]=='-')return (-num);else retu原创 2012-06-04 17:35:36 · 618 阅读 · 0 评论 -
从顶部开始逐层打印二叉树结点数据
#include #include using namespace std; struct TNode { int element; TNode* left; TNode* right; TNode(int ele = 0, TNode* l = NULL, TNod转载 2012-12-26 15:15:19 · 1892 阅读 · 0 评论 -
合并链表
已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)Node * Merge(Node *head1 , Node *head2){if ( head1 == NULL)return head2 ;if ( head2 == NULL)return head1 ;Node *head = NULL ;Node转载 2012-03-08 14:26:18 · 543 阅读 · 0 评论 -
数据结构,集合,位向量表示
集合与集合的并int union(BitSet *s0,BitSet * s1,BitSet * s2){int i;if(s0->size!=s1->size||s2->size!=s1->size)return 0;for(i=0;isize;i++)s2->array[i]=s0->array[i] | s1->array[i];return 1;}转载 2012-06-06 10:18:32 · 2134 阅读 · 0 评论 -
数据结构基本概念
栈:只允许在表的末端进行插入和删除的线性表队列:只允许在表的一端插入,在另一端删除的线性表一个排序算法的时间复杂度与所需比较关键字的次数有关比较次数与序列初态无关的算法:二路并归 简单选择比较次数与排序方法无关的是 :选择排序法 时间复杂度与初始排序无关:直接选择排序满二叉树:如果一棵二叉树的任何结点或者是树叶,或者有两棵非空子树完全二叉树:如果一棵二叉树 只有最下面的原创 2012-04-22 12:49:06 · 684 阅读 · 0 评论 -
插入排序:直接插入排序 二分法插入排序 表插入排序 Shell排序
直接插入排序:第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。 二分法插入排序:在直接插入排序的基础上,为了减少比较次数,在插入时用二分法比较找插入位置 表插入排序: Shell排序:原创 2012-04-21 10:24:38 · 916 阅读 · 0 评论 -
数据结构,队列,顺序表示
入队void enQueue_seq(PSeqQueue paqu,DataType x){if((paqu->r+1)&MAXNUM==paqu->f)printf("Full queue,\n");else{paqu->q[paqu->r]=x;paqu->r=(paqu->r+1)%MAXNUM;}}出队void deQueue_seq(P转载 2012-06-07 17:44:29 · 602 阅读 · 1 评论 -
String 的 compareTo 方法
Compares the specified stringto this string using the Unicode values ofthe characters. Returns 0 ifthe strings contain the same characters inthe same order. Returns anegative integer if the first转载 2012-06-19 11:19:25 · 817 阅读 · 0 评论 -
用户输入M,N值 ,从1到N开始顺序循环数数,每数到M输出该值,直到全部输出
//循环链表 for( j=0 ; j{ for (i=0 ; i { P=P->next; }printAndDelete(P);}原创 2012-02-27 18:58:14 · 1605 阅读 · 0 评论 -
二分法插入排序
void binSort(SortObject * pvector){int i,j,left,mid,right;RecordNode temp;for(i=1;in;i++){ temp=pvector->record[i]; left=0; right=i-1; while(left { mid=(left+right转载 2012-06-11 14:30:42 · 514 阅读 · 0 评论 -
给定数组B[m+1][n+1],每一维上的数均是从小到大存储的,在数组中查找给定的数x
//给定数组B[m+1][n+1],每一维上的数均是从小到大存储的,在数组中查找给定的数x(已知x在B中是存在的) public class Search { static int m = 2; static int n = 3; static int[][] B = { { 1, 2, 3, 4 }, { 11, 12, 13, 14 }, { 21, 22, 23, 24原创 2012-12-10 14:45:45 · 1772 阅读 · 0 评论 -
直接选择排序
void selectSort(SortObject * pvector){int i,j,k;RecordNode temp;for(i=0;in-1;i++){int i,j,k;RecordNode temp;for(i=0;in-1;i++){ k=i; for(j=i+1;jn;j++)if(pvector->record[j].keyreco转载 2012-06-11 15:49:27 · 527 阅读 · 0 评论 -
数据结构,串
设s、t为两个字符串,分别放在两个一维数组中,m、n分别为其长度,判断t是否为s的子串,如果是,输出子串所在位置,否则输出0。int function(char s[],t[],int m,n){int i=0,j=0;while(i{ if(s[i]==t[j]){i++;j++;} else {i=i-j+1;j=0;}} if原创 2012-06-04 09:52:41 · 1003 阅读 · 0 评论 -
稳定的排序算法
直接插入排序二分法插入排序表插入排序(所有的插入排序) 起泡排序基数排序归并排序原创 2012-04-21 09:11:32 · 678 阅读 · 0 评论 -
找素数
for(i=0;i{list.add(i);}for(i=3;i{ for(j=2;j { if(i%j==0) list.删除第i个 ; }} //方法2:#include "stdafx.h"#include int main(){ for(int i=2;i原创 2012-02-23 13:15:21 · 604 阅读 · 0 评论 -
华为笔试题
int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至 数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路) #include "stdafx.h" int B[10];void F原创 2012-02-27 20:53:29 · 770 阅读 · 1 评论 -
求有序单链表表示集合的交集
int intersectionLink(LinkSet s0,LinkSet s1,LinkSet s2){PNode x;if(s0==NULL||s1==NULL||s2==NULL){printf("no head node error");return 0;}s2->link=NULL;s0=s0->link;s1=s1->link;while(s0!=NULL&转载 2012-06-08 17:08:04 · 1678 阅读 · 0 评论 -
数据结构,线性表
将顺序存储结构的线性表(a1...an)逆置为(an...a1)void seq_invert(Element a[],int n){for(int i=0;i {t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}原创 2012-06-05 16:05:57 · 427 阅读 · 0 评论 -
直接插入排序
void insertSort(SortObject * pvector){ int i,j; RecordNode temp; for( i=1 ; in ; i++){ temp=pvector->record[i] ; j=i-1; while ( ( temp.key record[j].key )&&(转载 2012-06-06 18:49:10 · 493 阅读 · 1 评论 -
选择排序:直接选择排序 堆排序
直接选择排序: 所有记录中选出最小的记录与第一个记录交换,其余记录中选出最小的记录与第二个记录,以此类推堆排序: 将堆顶元素与堆最后一个元素交换,同时令堆的大小减少一个,堆序的修复,反复执行,直到堆中只剩一个元素原创 2012-04-21 09:28:31 · 619 阅读 · 0 评论 -
起泡排序
void bubbleSort(SortObject * pvector){int i,j,noswap;RecordNode temp;for(i=0;in-1;i++){noswap=TRUE;for(j=0;jn-i-1;j++){if(pvector->record[j+1].keyrecord[j].key){temp=pvector->recor转载 2012-06-12 11:41:26 · 666 阅读 · 0 评论 -
数据结构,数组和广义表
给定整数数组b[0...N-1],b中连续的相等元素构成的子序列称为平台,求出b中最长平台的长度void platform(int b[],int N){length=1;start=0;j=0;i=0;while(i{ while(i if(i-j+1>length){length=i-j+1;start=j;} i+原创 2012-06-05 14:50:54 · 611 阅读 · 0 评论 -
B-Tree/BTree 的Java实现
public class BTree<Key extends Comparable<Key>, Value> { private static final int M = 4; // max children per B-tree node = M-1 private Node root; // root of the B-tree privat翻译 2015-03-26 10:10:35 · 5668 阅读 · 3 评论 -
二叉树操作
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;class BTree { String data = null; BTree rightChild = null; BTree leftChild = null;}public class Tree原创 2012-12-28 18:19:13 · 652 阅读 · 0 评论 -
排序并过滤掉相同的值 一种算法 和 其优化算法(使用it.unimi.dsi.fastutil.longs.LongOpenHashSet)
import java.util.Arrays;public class LongSortAndFilter { public static long[] process(long[] values, int size) { if (size == 0) { return new long[0]; } Arr原创 2014-06-17 13:52:41 · 2259 阅读 · 0 评论 -
B-Tree/BTree 的Java实现
package main;public class BTree { BTreeNode root; // Pointer to root node int t; // Minimum degree BTree(int _t) { t = _t; } void traverse() { if (root != null)翻译 2015-03-30 11:21:47 · 1999 阅读 · 2 评论 -
最长公共子序列(LCS)问题
最长公共子序列和最长公共子串。在英文的解释中,前者为TheLongest Common Subsequence,后者为The Longest CommonSubstring。而最大的区别是:如:BCXCADFESBABCACA和ABCACADF最长公共子序列求解:BCCADF(不唯一)(子序列可以是不连续的,即两个字符串中相同的字符组成的序列,但是字符出现的顺序不能颠倒)转载 2012-12-25 18:01:14 · 872 阅读 · 0 评论 -
数据结构,队列,链接表示
PLinkQueue createEmptyQueue_link(void){PLinkQueue plqu;plqu=(PLinkQueue)malloc(sizeof(Struct LinkQueue));if(plqu!=NULL){plqu->f=NULL;plqu->r=NULL;}else printf("Out of space!!\n");retur转载 2012-06-07 18:02:49 · 693 阅读 · 1 评论 -
百度之星
描述在百度之星的贴吧里面,Java的爱好者和C++的爱好者总是能为这两种语言哪个更好争论上几个小时。Java的爱好者会说他们的程序更加整洁且不易出错。C++的爱好者则会嘲笑Java程序很慢而且代码很长。另一个Java和C++爱好者不能达成一致的争论点就是命名问题。在Java中一个多个单词构成的变量名应该按照如下格式命名:第一个单词的开头用小写字母,其余单词都以大写字母开头,单词与单词之间不原创 2012-06-08 09:52:54 · 696 阅读 · 0 评论 -
找符合条件的整数
任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0 #include "stdafx.h"#include bool HasOnlyOneAndZero(int p);int main(){ int n=11; int m; for(m=2;m { int product=m*n;原创 2012-03-10 16:10:05 · 926 阅读 · 0 评论 -
从n中选k的组合数
public class ZuHe { public static void main(String args[]){ System.out.print(comm(5,2)); } static int comm(int n,int k){ if (n==k||k==0) return 1; else return原创 2012-10-28 21:48:54 · 1649 阅读 · 0 评论 -
交换排序:起泡排序 快速排序
起泡排序:第一个和第二个比较,交换,第二个和第三个比较,交换,。。。第n-1和第n个,是为一次起泡,经过这次起泡,最大的记录被交换到第n个位置,再对前n-1记录同样处理,使n-1个的最大被交换到第n-1个位置上,, 共n-1次起泡 快速排序:在待排序的n个记录中任取一个记录(通常取第一个记录)为分区标准,把所有小于该排序码的记录移到左边,把所有大于该排序码的记录移到右边,中间放所选记录,称原创 2012-04-21 09:44:06 · 842 阅读 · 0 评论