摘要: 在stdlib.h里 qsort(a, n, sizoef(int), cmp) ;这样一句就排好了 第一个参数是需要排序的指针,一般为数组类型,我们这儿传进去的是e; 第二个参数是进行排序的元素个数,由于我们只初始化了10个,所以传10; 第三个参数是每个元素的大小,所以我们传进去sizeof(expo); 第四个参数是比较的逻辑,是一个函数指针,我们传进去修改后的cmp; # include <stdio.h># include <stdlib.h>int cmp1(const void *a, const void *b){int aa = *(int*)a , 阅读全文
posted @ 2012-01-26 12:44 朝圣の路 阅读(175) 评论(0) 推荐(0) 编辑
摘要: #include"stdio.h"int pos(char *a){int i,index;index=0;for(i=1;a[i]!='\0';i++)if(a[index]<a[i])index=i;return index;}int main( ){char a[100],i,t;while(scanf("%s",a)==1){t=pos(a);for(i=0;a[i]!='\0';i++){if(a[i]==a[t])printf("%c(max)",a[i]);elseprintf(&q 阅读全文
posted @ 2012-01-26 12:44 朝圣の路 阅读(134) 评论(0) 推荐(0) 编辑
摘要: #include"stdio.h"#include<string.h>char text[100000];int main(){ int n,i,len,count; while(scanf("%d%*c",&n)==1) { while(n--){ gets(text); count=0; len=strlen(text); for(i=0;i<len;i++){ if(text[i]<0) { ... 阅读全文
posted @ 2012-01-26 12:43 朝圣の路 阅读(141) 评论(0) 推荐(0) 编辑
摘要: fabs其中abs是absolute绝对值的意思f是神马f是float你把一个int转换成float很可能会有精度的损失不到万不得已不要转比如11转成float可能是10.9999999999 阅读全文
posted @ 2012-01-26 12:37 朝圣の路 阅读(257) 评论(0) 推荐(0) 编辑
摘要: # include <stdio.h>void output(int n, int r){char tab[] = "0123456789ABCDEFGHIJKLMN" ;if (n == 0) return ;output (n/r, r) ;printf ("%c", tab[n%r]) ;}int main (){int n, r ;while (scanf ("%d%d", &n, &r)){if (n < 0){printf ("-") ;n = -n ;}output( 阅读全文
posted @ 2012-01-26 12:35 朝圣の路 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 就是属于A但是不属于B的部分 比如说A={1,2,3},B={2,4,5} A-B={1,3} 阅读全文
posted @ 2012-01-26 12:34 朝圣の路 阅读(1078) 评论(0) 推荐(0) 编辑
摘要: 一般pow和fabs用于实型。。。。一般不用再整型当中。。。。然后那个%取余时一般只能对整型数据取余如果出现实型则编译错误。。。。 阅读全文
posted @ 2012-01-26 12:33 朝圣の路 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 数字上面的符号的ASCII码值不是连续的。。。。 阅读全文
posted @ 2012-01-26 12:32 朝圣の路 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 关于错排。。。杭电2048N张票的所有排列可能自然是Ann= N!种排列方式现在的问题就是N张票的错排方式有几种。首先我们考虑,如果前面N-1个人拿的都不是自己的票,即前N-1个人满足错排,现在又来了一个人,他手里拿的是自己的票。只要他把自己的票与其他N-1个人中的任意一个交换,就可以满足N个人的错排。这时有N-1种方法。另外,我们考虑,如果前N-1个人不满足错排,而第N个人把自己的票与其中一个人交换后恰好满足错排。这种情况发生在原先N-1人中,N-2个人满足错排,有且仅有一个人拿的是自己的票,而第N个人恰好与他做了交换,这时候就满足了错排。因为前N-1个人中,每个人都有机会拿着自己的票。所以 阅读全文
posted @ 2012-01-26 12:31 朝圣の路 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 其实double 不是万能的。。。。位数达到17.18位之后就无法再精确了 阅读全文
posted @ 2012-01-26 12:31 朝圣の路 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 这次校赛我发现其实题目不是解出来就结束了。。。而是应该找方法不断地优化方法优化思路找出能让计算机高效解题的思路。。。可能每一道题人们都会有相应的解题思路但是有的麻烦有的简洁所以。。。通过这次校赛我觉得找出真正简洁方便的思路才是王道。。。 阅读全文
posted @ 2012-01-26 12:28 朝圣の路 阅读(138) 评论(0) 推荐(0) 编辑
摘要: Problem DescriptionPayne和Quincy是一对好Basefriend,即使在“六一光棍节”这天,寂寞无聊的Payne决定调戏一下Quincy。他在一张纸上写下了一串数字,然后来到Quincy面前。“嗨,Quincy,我看你也挺无聊的,来验证一下你的智商吧。”“噢,Payne,你又有什么鬼主意了?”“嘿,听一听吧,会很有趣的!”“嗯,那你说吧。”“哈,听着,你看这里有一串数。我们从中取一段连续的数字,比如你看这的1357902468147258369,我们从中取出一段长度为7的子串,可以是5790246,或者是0246814。这样我们就得到了一些新的数。然后,让我们看看长度 阅读全文
posted @ 2012-01-26 12:27 朝圣の路 阅读(220) 评论(0) 推荐(0) 编辑
摘要: (1) n条直线最多分平面问题题目大致如:n条直线,最多可以把平面分为多少个区域。析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。这样就会得到n-1个交点。这些交点将第n条直线分为2条射线和n-2条线断。而每条射线和线断将以有的区域一分为二。这样就多出了2+(n-2)个区域。故:f(n)=f(n-1)+n=f(n-2)+(n-1)+n……=f(1)+1+2+……+n=n(n+1)/2+1 (2) 折线分平面(h 阅读全文
posted @ 2012-01-26 12:26 朝圣の路 阅读(3244) 评论(1) 推荐(3) 编辑
摘要: 找一个子序列的和等于M,那么这个子序列可以看成a+1, a+2, ... , a+d 这时,d就为这个序列的长度,起始数字就是a+1,而这个序列的和即M=a*d + (1 + d) * d /2;得出d*d<2 * m,从而可以枚举d,计算出a#include"stdio.h"#include"math.h"int main( ){ __int64 n,m,d,b; while(scanf("%I64d%I64d",&n,&m)==2&&(n!=0||m!=0)) { for(d=sqrt(2.0 阅读全文
posted @ 2012-01-26 12:25 朝圣の路 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 现在我要算第i个 简单啊for (j = 0 ; j < i-1 ; j++){ cur_time = dp[j] + w(j, i) ; if (cur_time < dp[i]) dp[i] = cur_time ;} 阅读全文
posted @ 2012-01-26 12:24 朝圣の路 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 首先我必须说一句。。。。这题对我来说实在是挺难的,,,做了好几个小时,不过值得庆幸的是最后在学长的帮助下终于做出来了。。。但是虽然难我却犯了无谓的错误浪费了许多宝贵的时间。。。首先最不应该忽略的就是清零。。。这个错误我已经犯N遍了。。。还有就是得多用些笔算神马的。。这样在调试的时候比较容易发现潜在的错误。。。 本题的主要思路:先考虑可能在任意一个加油站作为乌龟最后加油的地方。。。然后利用第推的思想卒个求和。。。。比如乌龟可能把第二个加油站作为最后加油的地点。。。由此我们需要依次求出把原点作为前一个加油站到第二个加油站的时间和把第一个加油站作为前一个加油站到第二加油站的时间。。。然后比... 阅读全文
posted @ 2012-01-26 12:23 朝圣の路 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 此题错排典型题。。。。刚开始我得思路是一半固定。。。另一半随便排。。。结果是这里面有很多重复的。。。比如当把另一半固定时也有全对的情况。。。所以应该按严格错排来做#include"stdio.h"double zuhe(int n,int m){ double s=1,i; for(i=0;i<m;i++) s=s*(n-i)/(i+1); return s;}int main( ){ int n,m,i; double s[20],sum; s[1]=0;s[2]=1; for(i=3;i<20;i++) s[i]=(i-1)*(s[i-1]+s[i-2]); 阅读全文
posted @ 2012-01-26 12:19 朝圣の路 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 假设小兔的棋盘是 8 × 8 的 ( 当然你也可以假设是其他 )。如下图:箭头方向表示从该格子下一步能去的格子。因为不能穿越对角线,所有对角线上的格子只有进去的箭头,没有出来的箭头。观察上图你就可以发现,其实这是一张关于对角线对称的图。所有我们只要求一个方向的值,然后乘以2即可。我们就拿下三角来考虑。不难发现,所有在0列上的格子,路径数都是 1 (只能从上面过来)。而其他格子则都是由上、左两个方向过来,即:f(i, j) = f(i - 1, j) + f(i, j - 1);另外f(i, i) = f(i, j - 1) 或者 f(i, i) = f( i-1, j ) ;#inc 阅读全文
posted @ 2012-01-26 12:16 朝圣の路 阅读(741) 评论(1) 推荐(0) 编辑
摘要: 其实很简单,用sprintf(str,"%d",参数)即可 阅读全文
posted @ 2012-01-26 12:14 朝圣の路 阅读(188) 评论(0) 推荐(0) 编辑