- 博客(20)
- 资源 (2)
- 收藏
- 关注
原创 数的 双亲孩子 表示法结点结构定义
//数的双亲孩子表示法结点结构定义#define MAX_TREE_SIZE 100type char ElemType; //结点的数据类型为 char 类型 //定义一个孩子结点 typedef struct CTNode{ int child; //孩子结点的下标 struct CTNode *next; //指向下一个孩子结点的指针 }
2015-07-25 17:33:16 1354
原创 数的双亲表示法结点结构定义
//数的双亲表示法结点结构定义#define MAX_TREE_SIZE 100type int ElemType;typedef struct PTNode{ ElemType data; //结点数据 int parent; //双亲位置 即数组的下标 } PTNode;typedef struct{ PTNode nodes[MAX_TREE_SI
2015-07-25 17:01:35 1255
原创 nyoj 915 + - 字符串 (递归)
+-字符串时间限制:1000 ms | 内存限制:65535 KB难度:1描述Shiva得到了两个只有加号和减号的字符串,字串长度相同。Shiva一次可以把一个加号和它相邻的减号交换。他想知道最少需要多少次操作才能把第一个字符串变换成第二个字符串。你现在要去帮助他完成那个这个问题。输入多组测试数据每组数据有两行,每行包含一个由”+”和”-“组
2015-07-24 21:06:10 625
原创 KMP算法(部分重要代码)
重要代码呈现,剩下的还需自行理解编写运行 @—@ 欢迎讨论~typedef char *String;//i表后缀,j表前缀 ,前缀是固定的,后缀是相对的 //获得 next数组的内容,T 是模式匹配版 void get_next( String T,int *next){ j=0; i=1; next[i]=0; while(i<t[0]) //t[
2015-07-24 11:03:49 321
原创 八皇后 (递归)
#include int count=0;int notDanger(int row,int j,int (*chess)[8]){ int i,k,flag1=0,flag2=0,flag3=0,flag4=0,flag5=0; //判断列方向 for(i=0;i<8;i++) { if(*(*(chess+i)+j)!=0) { flag1=1; b
2015-07-24 07:53:49 328
原创 钱的最少张数
第一种:依次输出#include int main(){ int k; scanf("%d",&k); while(k--) { int type[]={100,50,20,10,5,1},nu=6; int cash,i,n=0; scanf("%d",&cash); for(i=0;i<nu;++i) { printf("%d:%d\n",type[i
2015-07-23 13:56:48 560
原创 汉诺塔问题(递归)
其实用递归实现挺容易理解的#include //将 N 个盘子从 X 借助 Y 移动到Z上void move (int n,char x,char y,char z){ if (1==n) { printf("%c-->%c\n",x,z); } else { move(n-1,x,z,y); //讲n-1个盘子从 x 借助 z 移到 y 上
2015-07-23 13:52:06 276
原创 nyoj 236
法一:#include #include struct time{ int x,y;}ti[5001];int cmp(const void *a,const void *b){ struct time*c=(struct time *)a; struct time*d=(struct time *)b; if(c->x!=d->x) return c->x-d->x
2015-07-20 17:58:39 314
原创 nyoj 891 找点
找点时间限制:2000 ms | 内存限制:65535 KB难度:2描述上数学课时,老师给了LYH一些闭区间,让他取尽量少的点,使得每个闭区间内至少有一个点。但是这几天LYH太忙了,你们帮帮他吗?输入多组测试数据。每组数据先输入一个N,表示有N个闭区间(N≤100)。接下来N行,每行输入两个数a,b(0≤a≤b≤100),表示区间的两
2015-07-19 09:01:29 348
原创 括号配对问题
法一:数组解决问题#include#include int main(){int k;int i;scanf("%d",&k);getchar();while(k--){char a[10000],b[10000];int t=-1;gets(a);int len=strlen(a);for(i=0;a[i]!='\0';i++){
2015-07-14 17:24:58 265
翻译 nyoj 56 阶乘因式分解
描述给定两个数m,n,其中m是一个素数。将n(0输入第一行是一个整数s(0随后的s行, 每行有两个整数n,m。输出输出m的个数。/*给定两个数m,n求m!分解质因数后因子n的个数。这道题涉及到了大数问题,如果相乘直接求的话会超出数据类型的范围。下面给出一种效率比较高的算法,我们一步一步来。m!=1*2*3*……*(
2015-07-10 21:05:51 381
原创 大数阶乘
/*【分析】为了保存结果,先分析1000!大约等于4×102567,因此可以用一个3000个元素的数组f保存。让f[0]保存结果的个位,f[1]是十位,f[2]是百位,…,则每次只需要模似手算即可完成n!。在输出时需要忽略前导0。注意,如果结果本身就是0,那么忽略所有前导0后将什么都不输出。所幸n!肯定不等于0,因本题可以忽略这个细节。*/#include #inclu
2015-07-10 20:46:14 315
原创 数的长度
描述 N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)?输入首行输入n,表示有多少组测试数据(n随后n行每行输入一组测试数据 N( 0 输出对于每个数N,输出N!的(十进制)位数。样例输入31332000样例输出11130271
2015-07-10 19:44:28 293
原创 分数拆分
#include #include int main(){int n;scanf("%d",&n);while(n--){double k;scanf("%lf",&k);for(double y=1;y{double x=((-1)*k*y)/(k-y);double p=(int)x;if(x-p==0&&x>0)printf("1/
2015-07-10 19:34:20 346
原创 日期计算
#include int main(){ int k; scanf("%d",&k); int n,y,r,flag=0; int a[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31} }; while(k--) { int days=0;
2015-07-10 19:27:53 388
原创 矩形的个数
//本题主要利用公式求解// long long 可能在VC6.0上的运行不顺畅#include int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF) { printf("%lld\n",(long long)(1+a)*a/2*(1+b)*b/2); } return 0;}
2015-07-10 19:26:19 315
原创 公约数公倍数
#include int main(){int k;scanf("%d",&k);while(k--){int a,b,temp,bemp;scanf("%d%d",&a,&b);int aa,bb;aa=a;bb=b;if(a{temp=a;a=b;b=temp;}while(a%b!=0){temp=a%b;a
2015-07-10 19:23:04 286
原创 素数距离问题
#include #include int main(){ int k; scanf("%d",&k); while(k--) { int n,i,j; int fun(int n); scanf("%d",&n); for(i=n,j=n;;i--,j++) { if(fun(i)) { printf("%d %d\n",i,n-i);
2015-07-10 19:20:32 268
原创 蛇形填数(螺旋填数类似)
#include int main(){int n;scanf("%d",&n);int i,j,m=1;int a[101][101];for(i=0;i{for(j=i;j a[j][n-i-1]=m++;for(j=n-i-1;j>i;j--) a[n-i-1][j]=m++;for(j=n-i-1;j>i;j--) a[j][i]=m
2015-07-10 19:17:40 436
Javascript笔记
2015-08-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人