- 博客(30)
- 收藏
- 关注
原创 POJ1007解题报告
#include #include using namespace std;typedef struct DNA{ string s; int value;}DNA;int cmp(const DNA *a,const DNA *b){ return (a->value-b->value);}int main(){ int n,m; while(cin>>n>>
2014-09-09 00:02:58 432
原创 算法导论 chapter 10.1 Page233 Stack push and pop
//***算法导论 chapter 10 Elementary Data Structures***/////Page 233 伪代码转换成代码//Stack push and pop#include #define TRUE 1#define FALSE 0using namespace std;int stack_array[20]={0};//定义一个数组,当做桟来使用
2014-07-18 18:16:39 474
原创 堆排序 Heapsort
/*=============================================================================## FileName: HeapSort.cpp# Desc: 堆排序。数组的序号从1到len,长度为len+1。 ## Author: yulu# Email: 1873737
2014-05-16 16:50:39 615
原创 华为OJ 在字符串中找出连续最长的数字串
第一种算法 O(n*n),时间超时了。不过答案是对的。#include #include #include //#include "oj.h"using namespace std;/* 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回函数原型: unsigned int Continumax(char** pOutputstr, char* intputst
2014-05-08 15:52:41 999
原创 寻找最大和子数组 Find maximum subarrray
问题描述:输入是一个大小为n的整型数组,要求输出数组的任何连续子数组中的最大值。例如:输入的数组为array[10] = {31,-41,59,26,-53,58,97,-93,-23,84};输出最大连续子数组和为array[2...6]:187
2014-05-08 14:09:15 722
原创 华为OJ Home+work
#include "OJ.h" /*输入: nPapers表示试卷的数目(1≤Papers≤20),nRemain表示剩余的时间(1≤nRemain≤10000),paper[][2]是一个Papers*2的数组,每一行的两个元素依次为做完这一份试卷所需的时间、做完这份试卷的价值输出: *pMaxValue为获得的最大价值返回:0:异常1:计算成功返回*/int
2014-05-05 22:58:17 2757
原创 华为OJ 向升序单向链表中插入一个节点
直接替代该函数的代码即可。无需tian'j'aiListNode* InsertNodeToList(ListNode* pListHead, ListNode* pInsertNode){ if(!pListHead || !pInsertNode) return (ListNode *)NULL; ListNode *p=pListHead; //在
2014-05-05 00:59:02 1636
原创 线性表的链式存储
/******线性表链式存储******//*来源:《大话数据结构》*/#define OK 1#define ERROR 1typedef int Status;typedef int ElemType; /*线性表的单链表存储结构*/ typedef struct Node{ ElemType data; struct Node *next;}Node;typede
2014-04-08 14:43:55 491
原创 线性表的顺序存储
/******线性表的顺序存储******//*来源:《大话数据结构》*/ #include #define MAXSIZE 10 /*存储空间初始分配*/using namespace std;#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int Status;//线性表的存储结构 ty
2014-04-08 10:16:32 609
原创 POJ2255
……#include#include#includetypedef struct Node{ char ch; struct Node *left; struct Node *right;}Node; char mid[27];char pre[27];int n = -1;void make_tree(int i, int j);int main(vo
2014-02-27 18:27:47 584
原创 POJ3006 解题报告
#include#includeusing namespace std;const int MAX=1000000;bool prime[MAX];int main(){ memset(prime,1,MAX); prime[0]=0; prime[1]=0; for(int i=2;i<MAX;i++) { if(prime[i]) { for(int j=
2014-02-21 20:09:00 516
原创 筛法求素数
#include#includeusing namespace std;const int MAX=1000000;bool prime[MAX];int main(){ memset(prime,1,MAX); prime[0]=0; prime[1]=0; for(int i=2;i<MAX;i++) { if(prime[i]) { for(int j=
2014-02-21 19:58:30 454
原创 POJ1503 解题报告
解题思路:首先将字符串存在char a[]当中,然后将数反转过来,并且转化为int型,存在temp[]中。每次用新的temp与result做加法运算,该进位的要进位。需要注意的是,不能把数组开得太小,以下代码在temp[110], result[110]时就Wrong Answer了,但是改成150就AC了。#include#include#includeusing
2014-02-21 18:51:55 503
原创 POJ1083 解题报告
解题思路:如果一个门前同时有两个桌子经过,则该操作不能同时进行。例如1--4与3--6,则4的门前有两个桌子同时经过,3的门前也同时有两个桌子经过,则该操作不能同时进行。注意,3与4是同一个地方。#includeusing namespace std;int main(){ int TestCases;//The number of test cases.
2014-02-18 21:05:05 568
原创 POJ2739 解题报告
解题思路:1. 构造一个素数表 求1-10000里面的素数,存储在prime[10000]数组当中。我们用boo[i]来记录——如果i为素数,则boo[i]=0;反之,则boo[i]=1。 对于1-10000之间的任意一个数i,如果i能被2~(i的开方)之中的任何一个数字整除,则i不是素数;反之,则i为素数。因此我们用j的循环来判断i是不是素数。 最后,只要判断b
2014-02-11 20:46:28 513
原创 494
#includeint main(){char str[1000];char *s;int n=0,flag=1;while( gets(str)!=NULL ){s=str;while( *s!='\0' ){if( (*s>='A' && *s='a' && *s<='z') ){if( flag==1 ){ n++; flag=0;}}else flag=1;}printf("%d\n",n
2013-11-25 15:34:15 649
原创 《算法竞赛入门经典》第五章 推荐题目 UVaOJ 回文词(401)
尝试了好多次,终于AC了,噢耶!#include #include #define MAXN 50char str[MAXN];int is_pal(char* str){ int n,i,flag=1; n=strlen(str); for(i=0;i<(n/2);i++) { if( str[i]!=str[n-1-i] ) { flag=0; br
2013-08-02 17:38:02 1041 1
原创 《算法竞赛入门经典》第四章小结
题目:编写一个函数solve,给定浮点数a,b,c,d,e,f,求解方程组ax+by=c, dx+ey=f.任务1:使用assert宏,让解不唯一时异常退出。任务2: 解不唯一时仍正常返回,但调用者有办法知道解的数量(无解,唯一解,无穷多组解)。思考:函数的参数都有哪些,各是什么类型?//任务1#include #include double fucx(double a,d
2013-07-24 00:09:53 610
原创 《算法竞赛入门经典》第四章例题4-1 组合数
原来的例子,当m=1,n=20时会溢出,计算错误。修改如下:#include using namespace std;long long f(int n){ int i; long long m=1; for(i=1;i<=n;i++) m*=i; return m;}int main(){ int m,n; cin>>m>>n; cout<<f(n)/(f(
2013-07-22 15:04:09 724
原创 《算法竞赛入门经典》第三章习题3-8
手机键盘(keyboard)#include char a[20];int main(){ int i=0,n=0,b,c; char d; scanf("%s",a); printf("%s\n",a); n=sizeof(a); for(i=0;i<n;i++) { if( a[i]>='a' && a[i]<='o' ) { b=a[i
2013-07-22 14:00:41 692
原创 《算法竞赛入门经典》第三章习题3-7
题目:进制转换2(base2)输入基数b(2#include int main(){ int b,n,m=1,d=0; printf("Enter b and n:\n"); scanf("%d%d",&b,&n); while( n!=0 ) { d+=m*(n%10); n=(n-n%10)/10; m*=b; } printf("%d\n
2013-07-22 13:21:50 719
原创 《算法竞赛入门经典》第三章习题3-6
题目:进制转换1(base1)输入基数b(2运行结果如下#include int main(){ int b,n,t,m=1; printf("Enter b and n:\n"); scanf("%d%d",&b,&n); t=n; while( n/m!=0 ) { m*=b; n=n-n%m; } m=m/b; printf("m=
2013-07-22 11:46:45 689
原创 《算法竞赛入门经典》第三章习题3-5
题目:旋转rotate输入一个n*n字符矩阵,把它旋转90度之后输出。我遇到的问题是:例如输入3*3矩阵,本来输入9个字符就可以了。为什么我必须输入10个字符才可以呢?#include #define MAXN 10char a[MAXN][MAXN];int main(){ int i,j,n=3; for(i=0;i<n;i++) { for(j=0
2013-07-22 10:53:25 596
原创 《算法竞赛入门经典》第三章习题3-4
编译的时候提示有错误,错在哪里了呢?#includeint main(){ char a[20]; int n; gets(a); n=lenth(a); printf("n=%d",n); int i,num1=0,num2=0,flag=0,out; char cal; for(i=0;i<n;i++) {
2013-07-21 21:54:21 742
原创 《算法竞赛入门经典》第三章习题3-1
练习3-1 分数统计 输入一些学生的分数,哪个分数出现的次数最多?如果有多个并列,从小到大输出。 任务1:分数均为不超过100的非负整数。 任务2:分数均为不超过100的非负实数,但最多保留两位小数。//任务1 #include#includeint a[101];int main(){ int i,b,temp,max=0;
2013-06-20 13:32:12 758
原创 《算法竞赛入门经典》第三章习题3-2
3-2 输入若干单词,输出它们的平均长度。单词只包含大写字母和小写字母,用一个或多个空格隔开。//3-2单词的长度 #include#include#define MAXN 1000char a[MAXN];int main(){ char ch; int i=0,j=0,m=0,n=0; while(1) { scanf("%c",&ch); if(
2013-06-20 13:28:11 947
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人