
工具算法
感觉自己就是个bug
这个作者很懒,什么都没留下…
展开
-
0/1背包问题 初步了解
0/1背包问题 初步了解 问题描述: 有n件物品,每件物品的重量为w[i],价值为c[i].现在需要选出若干物品放入一个容量为V,使得在选入背包的物品重量和不超过容量V的前提下,让背包中物品的价值之和最大 ,求其最大值。(1<=n<=20) #include<bits/stdc++.h> using namespace std; const int maxn=30; int n,V,maxValue=0;//物品件数n,背包最大容量V,c[i]为每件物品的价值 int w[max原创 2020-06-04 13:49:32 · 235 阅读 · 0 评论 -
大整数的运算
大整数的运算 大整数的存储: 用数组存储即可: 如将整数235813存储到数组中,则有d[0]=3,d[1]=1,d[2]=8,d[3]=5,d[4]=3,d[5]=2,即整数的高位存储在数组的高位,整数的低位存储在数组的低位。不反过来存储的原因是,在进行运算的时候都是从整数的低位到高位进行枚举,顺位存储和这种思维相合。但是这也会产生一个需要注意问题:把整数按字符串%s读入的时候,实际上是逆位存储,机str[0]=‘2’,str[1]=‘3’,…,str[5]=‘3’,因此在读入之后需要在另存为至d[]数组原创 2020-05-31 10:31:01 · 172 阅读 · 0 评论 -
质因子分解
质因子分解 显然,由于最后要归结到若干不同质数的乘积,因此不妨先把素数表打印出来。素数表的打印在前面的文章中已经说过了,下面我们主要对质因子分解本身进行分析。 如果题目要求对1进行处理,那么视题目的条件而进行特判处理。 由于每个质因子都出现不止一次,因此,不妨定义结构体factor,用来存放质因子及其个数,如下所示: struct factor{ int x,cnt; //x为质因子, cnt 为其个数 }fac[10]; 如180: fac[0].x=2; fac[0].cnt=2; fac[1].x原创 2020-05-30 14:50:39 · 176 阅读 · 0 评论 -
素数的判断
素数的判断 基本代码: 时间复杂度O(n*n1/2) bool isPrime(int n){ if(n<=1)return false; if(n%=2)return false; int sqr=(int)sqrt(1.0*n); for(int i=3;i<=sqr;i+=2){ if(n%i==0)return false; } /* for(int i=3;i*i<=n;i++){ if(n%i==0)return false; } */ return原创 2020-05-30 14:28:28 · 168 阅读 · 0 评论 -
分数的四则运算
分数的四则运算 分数的表示: 最简洁的写法就是写成假分数的形式 struct Fraction{ int up,down; } 三项规则: 1.使down为非负数。如果分数为负,那么另分子up为负即可 2.如果该分数恰为0,那么另up=0,down=1。 3.分子和分母没有除了1之外的公约数 分数的化简 分数化简主要用来使Fraction变量满足分数表示的三项规定,因此化简步骤也分为一下三步: 1.如果分母down为负,那么另分子up和分母down都变成相反数 2.如果分子up为0,那么另分母down为原创 2020-05-30 13:58:58 · 463 阅读 · 0 评论 -
最大公约数和最小公倍数
最大公约数和最小公倍数 欧几里得算法: int gcd(int a,int b){ return !b ? a : gcb(b, a % b); } 最小公倍数: int c=gcd(int a,int b); int d=a/c*b;原创 2020-05-30 13:27:53 · 147 阅读 · 0 评论