摘要:第一种方法:在优先队列中,优先级高的元素先出队列。标准库默认使用元素类型的<操作符来确定它们之间的优先级关系。优先队列的第一种用法,也是最常用的用法:priority_queue<int> qi;通过<操作符可知在整数中元素大的优先级高。故示例1中输出结果为:9 6 5 3 2第二种方法:在示例1中,如果我们要把元素从小到大输出怎么办呢?这时我们可以传入一个比较函数,使用functional.h函数对象作为比较函数。priority_queue<int, vector<int>, greater<int> >qi2;其中第二个参数为容
阅读全文
摘要:题意:找一对最接近的素数(素数对可以相等)其和等于给出的偶数。解法:prim[10001]数组中不是素数标记为1,从prim[]下标为n/2开始搜.注意:素数对可以相等。ac代码:View Code #include<iostream>using namespace std;const int m=10000+1;bool prim[m];int main(){ int i,j; memset(prim,0,sizeof(prim)); prim[0]=prim[1]=1; for(i=2;i<=m/2;i++)//预处理,执行后不是素数的被标记为1 { ...
阅读全文
摘要:题意:W H分别代表图的列与行,图中有'.' '#' '@'从@的位置出发最多能搜到多少个‘.’,‘#’为障碍物。解法:广搜ac代码:View Code #include<iostream>#include<queue>using namespace std;const int M=20+3;char map[M][M];//地图bool use[M][M];//用作标记int v[4][2]={-1,0,0,-1,1,0,0,1};//方向向量:左,上,右,下struct que{ int i,j;};int main(
阅读全文
摘要:题意:给你两个数,求和。很明显无论是int(最多能装10位的数),还是__int64(最多能装20位的数)都装不起1000位的数,所以必须用字符串装要相加的数。解法:使用strrev()把字符串中的元素倒过来,如:a[3]="abc",strrev(a),数组a中的元素循序为"cba"注意:输入的两个数都为0的情况,或一个数为0的情况。ac代码:View Code #include <stdio.h>#include<string.h>int main(){ int t; char a[1020],b[1020],c[1020];
阅读全文
摘要://sort排序用法//函数原型: void sort(iterator begin, iterator end);//将[begin,end) 之间的元素使用默认的<进行排序#include <algorithm> // 包含头文件//自定义排序函数bool cmp(const int a,const int b){ return a > b;}int main(){ int a[5]={3,4,1,2,5}; sort(a,a+5,cmp); //cmp,降序排序 5,4,3,2,1 sort(a,a+5); //默认升序排序,1,2,3,4,5 return 0;
阅读全文
摘要:基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1094、1095、1096、1097、1098、1106、1108、1157、1163、1164、1170、1194、1196、1197、1201、1202、1205、1219、1234、1235、1236、1248、1266、1279、1282、1283、1302、1303、1323、1326、1330、1334、1
阅读全文