那些年做过的题
小与米
一只不懈努力的菜鸟,比较熟悉的语言C/C++,喜欢钻研算法 O(∩_∩)O哈哈~
展开
-
1012 最大公约数和最小公倍数问题
解法一、枚举法[解题思路] P,Q 以x0为最大公约数,通过碾转相除法求得到x0,y0为最小公倍数,通过P*Q/x0可以求得y0,根据最大公约数与最小公倍数的关系可以得到P*Q=x0*y0;所以穷举Pi(i=1,...,y0),通过P,x0,y0,求出Q,判断是否符合条件。[代码实现]#include#includeusing namespace std;in原创 2015-11-28 15:41:59 · 563 阅读 · 0 评论 -
1214 线段覆盖
贪心解法:[解题思路]首先将线段端点调整为左端点小于(或等于)右端点;第二,根据右端点将线段从小到大排序;第三,扫描一遍,每次遇到的第一个与当前的max不相交的即为最优选择。[代码实现]#include#includeusing namespace std;const int N=101;struct node{ int begin,end;}a[N原创 2015-12-06 21:34:04 · 488 阅读 · 0 评论 -
3115 高精度练习之减法
[解题思路] 把输入的数字以字符串的形式存储,转变为对字符串的处理,注意对负数,没有意义的0的处理。[代码实现]#includeusing namespace std;int main(){ string a,b; cin>>a>>b; if (a.size()b */ { swap(a,b); cout<<"-"; } for (int i=1;原创 2015-12-07 17:20:14 · 2209 阅读 · 0 评论 -
3117 高精度练习之乘法
[解题思路] 乘法的整体程序框架和加法的也是类似要注意,乘法中a的每一位都要和b的每一位相乘,乘完之后再从个位开始判断进位问题,最后反向去0输出就可以了[代码实现]#include #include using namespace std;string a,b;int ia[510],ib[510],pdt[1010];int main(){ cin>>a>>原创 2015-12-07 22:31:10 · 338 阅读 · 0 评论 -
高精度除法(大数除法)
[问题描述]给出两个正整数,计算A÷B的值,保证A和B的位数不超过500位。输入描述输入两个用空格隔开的正整数。输出描述输出A÷B的值。样例输入500 2样例输出250[解题思路]大数除法的实现有两种方式:1:用a-=b,循环,直到a2:模拟现实,我们手算时是怎么算的,程序就怎么写,假设a={2 4 2 3 1},b={2 3},结果ans=原创 2015-12-08 16:53:05 · 893 阅读 · 0 评论 -
3116 高精度练习之加法
[解题思路] 解题思路和高精度的减法类似,需要注意的是动态申请内存的时候,取最大的长度再加一,因为相加结果可能会进一。[代码实现]#include#includeusing namespace std;int main(){ string a,b; cin>>a>>b; int a_size=a.size(); int b_size=b.size(); int原创 2015-12-07 21:18:54 · 334 阅读 · 0 评论 -
八皇后问题(回溯)
[问题描述] 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。[解题思路] 从第1行第1个开始,遍历8*8格,当发现当前点在同一行、同一列或同一斜线上有相同的点就不取该点,遍历原创 2015-11-29 20:07:47 · 330 阅读 · 1 评论 -
【蓝桥第四周】均分纸牌
[解题思路] 把所有牌堆减去平均数,就得到一串有正有负的数字,从左至右把这些数字逐渐累加,如果过非零说明要有一次交换(如果为负,说明要从右边拿过来,为正则说明要从左边拿过去,为零则说明前面的交换恰好完成)[代码实现]#includeusing namespace std;int main(){ int n ,ave=0,a[101]; cin>>n;原创 2015-12-06 21:28:58 · 460 阅读 · 0 评论 -
【蓝桥第二周】01背包问题
01背包问题题目描述 Description 有N件物品和一个容量为V的背包。第i件物品的重量是w[i],价值是v[i]。求解将哪些物品装入背包可使价值总和最大。输入描述 Input Description 第一行两个整数分别是N件物品与背包容量V接下来分别是N行,每行两个数分别是当前物品的重量w与价值v;输出描述 Output Desc原创 2015-12-19 23:21:45 · 513 阅读 · 0 评论 -
1083Cantor表
[代码实现]#includeusing namespace std;int main(){ int n; cin>>n; int i=0; /*第几列*/ while(n>i) /*找出n在第几列*/ { }原创 2015-11-27 16:48:46 · 443 阅读 · 0 评论 -
1160蛇形矩阵
[解题思路] 从最后一个数n*n,从右边往左边模拟,即n*n存放在二维数组a[x][y]里,n*n-1存放在a[x][y-1],...,直到y-i(i=i,2,...,n-1)等于1,这个方向模拟完毕,类似的,再从下往上模拟,再从左往右模拟,再从上往下模拟,顺时针模拟,直到n*n-i(i=1,2,...,n*n-1),等于1.其中要注意的是各个方向的结束标志,以及当a[x][y]!=0原创 2015-11-27 19:54:24 · 301 阅读 · 0 评论 -
【序列型动态规划】拦截导弹
1044 拦截导弹 1999年NOIP全国联赛提高组题目描述 Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入描述 Input D原创 2015-12-26 14:47:51 · 1956 阅读 · 0 评论