摘要: qsort函数简介头文件为:#include<stdlib.h> 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); 参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指 针,用于确定排序的顺序1.对一个长为1000的数组进行排序时,int a[1000]; 那么base应为a,num应为 1000,width应为 sizeof(int),comp函数随自己的命名。 qsor 阅读全文
posted @ 2012-04-18 22:40 加拿大小哥哥 阅读(597) 评论(1) 推荐(0) 编辑
摘要: //超时代码,需要o(logn)#include <stdio.h>int main(){ int m,n,i,ans=1; while (scanf("%d%d",&m,&n)!=EOF) { for (i=1;i<=n;i++) { ans*=m; ans%=10; } printf("%d\n",ans); }}#include<stdio.h>long pow_mod(int m, int n, int p){//if(!n) return 1;long temp;long ans;if(0==n)r 阅读全文
posted @ 2012-04-18 22:37 加拿大小哥哥 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 街区最短路径问题时间限制:3000 ms | 内存限制:65535 KB 难度:4描述 一个街区有很多住户,街区的街道只能为东西、南北两种方向。住户只可以沿着街道行走。各个街道之间的间隔相等。用(x,y)来表示住户坐在的街区。例如(4,20),表示用户在东西方向第4个街道,南北方向第20个街道。现在要建一个邮局,使得各个住户到邮局的距离之和最少。求现在这个邮局应该建在那个地方使得所有住户距离之和最小;输入 第一行一个整数n<20,表示有n组测试数据,下面是n组数据;每组第一行一个整数m<20,表示本组有m个住户,下面的m行每行有两个整数0<x,y<100,表示某个用户 阅读全文
posted @ 2012-04-18 21:56 加拿大小哥哥 阅读(1098) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>int main(){ int sum,temp;int t,i; while(~scanf("%d",&t)) { sum=0; for(i=1;i<=t;i++) { scanf("%d",&temp); sum+=temp; } printf("%d\n",sum); } return 0;}//超时代码#include<stdio.h>int main(){ int sum,temp;int t,i,j,T; while(1) { sum=0; s 阅读全文
posted @ 2012-04-17 14:46 加拿大小哥哥 阅读(166) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>int main(){ int a,b,sum,temp;int t,i,j,T; scanf("%d",&T); for(j=1;j<=T;j++) { sum=0; scanf("%d",&t); if(0==t) break; for(i=1;i<=t;i++) { scanf("%d",&temp); sum+=temp; } printf("%d\n",sum); } return 0;}//超时代码 //主要是用了上一题的 阅读全文
posted @ 2012-04-17 14:25 加拿大小哥哥 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 第一次没给sum赋初值,得出了一个绝对值超大的负数,而且sum=0要放在while内的其他语句之前,#include<stdio.h>int main(){ int sum,temp;int T; while(scanf("%d",&T),T) { sum=0; while(T--) { scanf("%d",&temp); sum+=temp; } printf("%d\n",sum); } return 0;} 阅读全文
posted @ 2012-04-17 14:15 加拿大小哥哥 阅读(322) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>int main(){ int a,b; while(scanf("%d%d",&a,&b),a||b) { printf("%d\n",a+b); } return 0;} //错误代码,多了一个scanf语句 #include<stdio.h>int main(){ int a,b; while(scanf("%d%d",&a,&b),a||b) { scanf("%d%d",&a,&b); printf( 阅读全文
posted @ 2012-04-17 13:55 加拿大小哥哥 阅读(261) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>int main(){ int a,b;int i,T; scanf("%d",&T); for(i=1;i<=T;i++) { scanf("%d%d",&a,&b); printf("%d\n",a+b); } //printf("\n");//必须去掉,否则PE(presentation error) return 0;}//pe代表结果正确,只是输出格式不对这样也对#include<stdio.h>int main(){ 阅读全文
posted @ 2012-04-17 13:26 加拿大小哥哥 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 寻找最大数时间限制:1000 ms | 内存限制:65535 KB 难度:2描述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,比如当n=92081346718538,m=10时,则新的最大数是9888输入 第一行输入一个正整数T,表示有T组测试数据每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证 数据首位非0,m小于整数n的位数) 输出 每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数 样例输入 292081346718538 101008908 5样例输出 988898#include<stdio. 阅读全文
posted @ 2012-04-17 12:58 加拿大小哥哥 阅读(467) 评论(0) 推荐(1) 编辑
摘要: #include<stdio.h>int main(){ int a,b,sum; while(scanf("%d%d",&a,&b)!=EOF)//或者while(~scanf("%d%d",&a,&b))//-1补码的32位全是1//while(scanf("%d%d",&a,&b)+1) printf("%d\n",a+b); return 0;}注意:不加EOF实际是死循环,因为要么返回2,要么-1,循环不会结束 阅读全文
posted @ 2012-04-17 11:44 加拿大小哥哥 阅读(294) 评论(0) 推荐(0) 编辑