03 2011 档案
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1032View Code #include"iostream"using namespace std;int i,j,Max=0;int fun(int x,int y){ for(i=x; i<=y; i++) { int count=1; int xx=i; while(xx!=1) { if(xx%2!=0) xx=3*xx+1; else xx=xx/2; count++; } if(count>Max) Max=count; } return Max;}int mai
阅读全文
摘要:http://www.blogjava.net/dongwq/archive/2009/10/25/299653.html
阅读全文
摘要:View Code //按矩阵对角线输出问题#include"iostream"#define M 50using namespace std;int main(){ int n,i,j; int a[M][M]; while(cin>>n) { for(i=0;i<n;i++) { for(j=0;j<n;j++) cin>>a[i][j]; } int k=0; for( k=1; k<=2*n-1;k++) { for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i+j==k-1)//
阅读全文
摘要:dijkstra#include"iostream"#define Max 999999using namespace std;int map[1001][1001];int visit[1001];int n,m;int a,b,time;int i,j,k,_min;int len;void DJ(){ for(i=1;i<=len;i++) { _min=Max; for(j=1;j<=len;j++) { if(!visit[j] && map[0][j]<_min) { _min=map[0][j]; k=j; } } if(_m
阅读全文
摘要:View Code #include"iostream"using namespace std;int main(){ int n,i,j; int b[720][720]; while(cin>>n) { memset(b,0,sizeof(b)); if(n==1) cout<<n<<endl; else { i=1,j=1; int k=1; for(int t=1; t<n ; t++) { while(j<=n-i+1&&j>=i) //横行->rigth { b[i][j]=k++; i
阅读全文
摘要:View Code #include"iostream"using namespace std;int main(){ int n; char ch[1000]; int i; scanf("%d\n",&n); // cin>>n;cout<<endl; while(n--) { gets(ch); int count=0; if(!(ch[0]>='a'&&ch[0]<='z')&&ch[0]!='_'&&!(c
阅读全文
摘要:很繁琐,花了将近两个小时。。。。。。。View Code #include"iostream"using namespace std;int main(){ char a[100]; int i,j,L; while(scanf("%s",a)!=EOF) { L=strlen(a); int num=0,zf=0,sign=0; for(i=0;i<L;i++) { if(a[i]>='0'&&a[i]<='9') { num=1;} if(a[i]>='A'&am
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1257导弹拦截#include"iostream"#define M 50000using namespace std;int n;int a[M];int i,j;int used[M];int flag=0;int main(){ while(cin>>n) { for(i=0;i<n;i++) cin>>a[i]; memset(used, 0 ,sizeof(used)); flag=0; for(i=0; i<n; i++) { if(used
阅读全文
摘要:带路径的数塔#include"iostream"using namespace std;int main(){ int a[100][100],b[100]; int i,j; int n; while(cin>>n) { for(i=0;i<n;i++) for(j=0;j<=i;j++) cin>>a[i][j]; int t=0; int y=a[0][0]; for(i=n-2;i>=0;i--) { int max=0,k=0; for(j=0;j<=i;j++) { if(a[i+1][j]>a[i+1][j
阅读全文
摘要:1 #include"iostream" 2 #define M 50000 3 using namespace std; 4 int n; 5 int a[M]; 6 int i,j; 7 int used[M]; 8 int flag=0; 9 int main()10 {11 while(cin>>n)12 {13 for(i=0;i<n;i++)14 cin>>a[i];15 memset(used, 0 ,sizeof(used));16 flag=0;17 for(i=0; i<n; i++)18 {19 if(used[i]
阅读全文
摘要:View Code 1 #include"iostream" 2 using namespace std; 3 int main() 4 { 5 int a,b,c; 6 int sum; 7 while(cin>>a>>b>>c,a+b+c) 8 { 9 if(a==0) sum=1;10 if(b==0&&a) 11 {12 if(c==0) sum=a+1;13 else if(c)14 {15 if(a<4) sum=a+1;16 else sum=a+5*c+1;17 }18 }19 if(a*b&
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1087View Code //dp问题:// 状态转移方程 b[i]=max(b[i], b[j]+a[i]);#include"iostream"using namespace std;#define M 1010int n;int a[M],b[M];int i,j;int main(){ while(cin>>n,n) { int Max=-0xffff; memset(b,0,sizeof(0)); for(i=0;i<n;i++) cin>>a[i]
阅读全文
摘要:http://blog.csdn.net/liuben/archive/2009/08/04/4409505.aspx
阅读全文
摘要:dijkstra 1 #include"iostream" 2 using namespace std; 3 double map[1010][1010]; 4 int visit[1010]; 5 double used[1010]; 6 int k; 7 double _max=0; 8 int i,j; 9 int n,m,a,b;10 int main()11 {12 13 while(scanf("%d",&n)!=EOF)14 {15 memset(map,0,sizeof(map));16 for(i=1;i<=n;i++)1
阅读全文
摘要:WORD文档中插入页码的问题一、页码从第二页开始 1、选择“插入-页码”,打开“页码”对话框。 2、取消“首页显示页码”复选框中的对钩,然后单击“格式”按钮,打开“页码格式”对话框。 3、“起始页码”后的框中键入数字“0” 。 4、按“确定”退出。二、页码从任意页开始 1、将光标定位于需要开始编页码的页首位置。 2、选择“插入-分隔符”,打开“分隔符”对话框,在“分隔符类型”下单击选中“下一页”单选钮。 3、选择“视图-页眉和页脚”,并将光标定位于页脚处。 4、在“页眉和页脚”工具栏中依次进行以下操作: ①单击“同前”按钮,断开同前一节的链接。 ②单击“插入页码”按钮,再单击“页码格式”按钮,
阅读全文
摘要:#include"stdio.h"#include"stdlib.h"#define MAX_VEXTEX_NUM 20 //定义顶点的最大值#define M 20#define STACK_INIT_SIZE 100 //定义栈的大小 100#define STACKINCREMENT 10 //定义栈的增量 10#define OK 1#define ERROR 0typedef int ElemType; //定义栈顶元素类型typedef struct ArcNode{ int adjvex; //该弧所指向的顶点的位置 struct ArcN
阅读全文
摘要:因为地球的公转周期是365.24219天,不是完整的整天。所以现行历法关于闰年的规定是每4年1闰,每100年减1闰,然后每400年再1闰。这样,每4年多出0.24219*4=0.96876天,接近1天,所以加1闰,但这样每4年就多了1-0.96876=0.03124天,每100年累积下来就多了100/4*0.03124=0.781天,大约多了1天,所以减少1闰。但这样每100年就少了1-0.781=0.219天,所以每400年下来就少了0.219*4=0.876天,所以每400年再加1闰。这样每400年就多了1-0.876=0.124天,1/0.124约等于8,8*400=3200年。也就是.
阅读全文
摘要:View Code 1 //kmp算法2 #include"iostream"3 using namespace std;4 char s[10000001];5 int next[100001];6 int L;7 int i,j;8 void Index_kmp()9 {10 while(i<L) //kmp核心算法11 {12 if(j==0||s[i]==s[j]) //继续比较后继字符 13 { ++i; ++j; next[i]=j; }14 else15 j=next[j]; //串向右移动16 }17 }18 int main()19 {20 whil
阅读全文
摘要:44 #include"iostream"45 #define M 1000 //适合数据量小的字符串,那么字符串长度过大时又如何处理?!46 using namespace std;47 int c[M][M];48 int Max(int a ,int b)49 {50 return a>b?a:b;51 }52 void LCD(char aa[], char bb[], int x, int y) //核心53 {54 int i,j;55 for(i=0;i<=x;i++)56 c[i][0]=0;57 for(j=0;j<=y;j++)58 c
阅读全文
摘要:二叉查找树(Binary Search Tree),或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。
阅读全文
摘要:素数的测试: 费尔马小定理:如果p是一个素数,且0<a<p,则a^(p-1)%p=1. 利用费尔马小定理,对于给定的整数n,可以设计素数判定算法,通过 计算d=a^(n-1)%n来判断n的素性,当d!=1时,n肯定不是素数,当d=1时,n很可能是素数. 二次探测定理:如果n是一个素数,且0<x<p,则方程x^2%p=1的解为:x=1或 x=p-1. 利用二次探测定理,可以再利用费尔马小定理计算a^(n-1)%n的过程 中增加对整数n的二次探测,一旦发现违背二次探测条件,即得出n不是素数的结论. 如果n是素数,则(n-1)必是偶数,因此可令(n-1)=m*(2^q),其中
阅读全文
摘要:刚参加完HDUContest Ranklist,前所未有的纠结,也是前所未有的尝到了“不是努力的不够,而上效率的滞后”,一直在努力,一直期盼着能小试牛刀,一展身手。可谁想第一道题就给泼了冷水,貌似简单的面罩下隐藏着捉摸不透的不确定性因素,使劲浑身解数,最终以提交n次超时而结束,就这样抱着试试的心态开始看艰难的第二题。一看,简单! 当带着激动的心情迅速地拿出方案并顺利地写完后,这下总该给个a鼓励鼓励了吧,感觉是标准答案了,一提交,w; 后来改了数遍,也没想明白究竟是哪儿出了错,就在最后的十几分钟突然灵感一闪,原来错的很深啊,这也是这道题的关键所在,又是算法,又是效率。。。看来需要改进的地方还很.
阅读全文
摘要:View Code //超时了,艾~ 1 #include"iostream" 2 using namespace std; 3 char a[100005],b[100005]; 4 int i,j,k; 5 int L1,L2; 6 int sign=0; 7 int mark=0; 8 int start=0,end=0; 9 void Xun_huan() //实现一次循环10 {11 char ch=a[0];12 for(int q=0;q<=L1-1;q++)13 {14 a[q]=a[q+1];15 }16 a[L1-1]=ch;17 sign++;
阅读全文
摘要:转: 为了把0去掉,我们把所有的因数2和5都提出来,放到最后再处理。N!中的N个相乘的数可以分成两堆:奇数和偶数。偶数相乘可以写成(2^M)*(M!),M=N DIV 2。M!可以递归处理,因此现在只需讨论奇数相乘。考虑1*3*5*7*9*11*13*15*17*...*N(如果N为偶数则是N-1),这里面是5的倍数的有5,15,25,35,...,可以其中的5提出来,变成(5^P)*(1*3*5*7*9* ...),后面括号中共P项,P=(N DIV 5+1) DIV 2,而后面的括号又可以继续提5出来,递归处理.现在剩下的数是1*3*7*9*11*13*17*19*....这些数我们只需要
阅读全文
摘要:http://acm.pku.edu.cn/JudgeOnline/problem?id=1423n!=(log10(sqrt(4.0*acos(0.0)*n))+n*(log10(n)-log10(exp(1.0)))+1);n==1除外
阅读全文
摘要:<本文中排序都是采用的从小到大排序>一、对int类型数组排序intnum[100];Sample:intcmp(constvoid*a,constvoid*b){return*(int*)a-*(int*)b;}qsort(num,100,sizeof(num[0]),cmp);二、对char类型数组排序(同int类型)charword[100];Sample:intcmp(constvoid*a,constvoid*b){return*(char*)a-*(int*)b;}qsort(word,100,sizeof(word[0]),cmp);三、对double类型数组排序(特别
阅读全文
摘要:View Code 1 /*给定一个八进制的小数题目要求你把它转换为十进制小数,转换后小数的位数是转换前八进制小数位数的3倍且不输出末尾无意义的零(即后置零). 我采用的方法是乘10然后对8取整(现在假设将p进制的小数转换为n进制,同样采用乘n取整:),每转换一位,都必须从最低位s[len-1]开始至小数的最高位(即小数点后的一位),每次计算积 g=a[j]*n+k(其中k为下一位积的进位),本位进位数 k=g/p,积在本位存入 s[j]=g%p;最后的整数k作为转换的一位存放于转换结果字符串中。*/ 2 #include"iostream" 3 #include"
阅读全文
摘要:View Code //POJ 3983 第二届顶嵌杯决赛A题 计算4个数等于24//搜索 数据较小,不用剪枝就过了//利用类似层叠那样,每运算一次,就合并两个数,所以少一个数,每次计算的值都保存在curVal中//注意浮点数1/3 *3 会等于1//格式化输出时用到sprintf,挺不错的#include<stdio.h>#include<string.h>#include<math.h>#define bool intint option[5];int order[5];float number[5];float curVal[4][5];//输出时用到
阅读全文
摘要:http://blog.csdn.net/luxuejuncarl/archive/2007/05/03/1595192.aspx(借鉴)~**~View Code 函数的调用会花掉很多时间。定义一个数组,充分利用数组的下标和值。如int a[1000],把下标和值都利用上。#include<iostream>using namespace std;#define MAX 10003int main(){ int i, b, sum, a[MAX]={0}; for(i=1; i<MAX; i++) { b = sum = i; while(b) { sum += b % 1
阅读全文