自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 华为oj 挑7

#include #include using namespace std; int main() { int n; int result = 0; cin>>n; for(int i=1;i<=n;i++) { if(i%7==0) //7的倍数 ++result; else { int temp = i; while(temp)

2015-12-30 16:11:23 256

原创 华为oj 尼科彻斯定理

这个题主要是分析怎么找到最小的数,m个数的总和是m*m*m,并且是个等差数列,假设最小的数是a,那么等差数列求和 (a+a+(m-1)*2)*m/2 = (a+m-1)*m = m*m*m。所以a= m*m-m+1; #include using namespace std; int main() { int m; cin>>m; int small = m*m-m+1; for(in

2015-12-25 10:10:52 337

原创 华为oj 放苹果

#include using namespace std; int count(int m,int n) { if(n==1||m==1||m==0) return 1; if(m<n) return count(m,m); else return count(m-n,n)+count(m,n-1); } int main() { in

2015-12-25 09:37:51 562

原创 华为oj 查找组成一个偶数最接近的两个素数

解题思路是由于两个数的和加起来是n,那么查找范围可以缩小到n的一半找是否是素数,如果是并且n-i也是素数,那么就比较当前的差值是否比之前的差值小,如果小就保存当前的状态。最后得到的就是最接近的两个素数。 #include #include #define IN 2147483647 using namespace std; bool isPrime(int n) { for(int j=2;

2015-12-24 22:01:22 285

原创 华为oj 合唱队

这个题目可以分解成正序和逆序的最大上升子序列的问题来处理,对每个数字存放以当前数字为结尾时的最大上升子序列数,只需要对前面的每个数进行比较,找到比当前数字小的数字,并且上升子序列长度最大的作为当前的最大值,即for(i=1;ia[j]&&dp[j]+1>dp[i]) dp[i] = dp[j]+1;}最后对每个数字遍历,找到dp[i]+lp[i]最大的值,这个i其实就是最高顶点。然后用总长n-dp

2015-12-24 10:21:35 298

原创 华为oj 称砝码

这个题目初看形式有点好像多重背包,但是它求的不是最大放入的砝码值,是求可以得到的砝码组合。这里重叠的问题在于你加入某个砝码的时候,前面得到的砝码总和是怎么组合得到的,只需要知道前面的砝码总和可以通过其他砝码组合求到即可。多个不同的砝码组合可以得到相同的组合值,所以不需要具体知道这个组合值是怎么得到的,只要知道可以有这个组合值就可以了。所以思想就是:对每个可能的组合值状态,判断当前值的砝码加入是否可

2015-12-23 16:18:37 741

原创 动态规划学习之0-1背包和完全背包

背包问题大体上有三种类型,分别是0-1背包,完全背包和介于其中的背包问题。其中又有很多小的细节改变,比如说背包是否要求刚好装满。一般求解的是背包不要求刚好装满,只要求在限制范围内的最大价值就可以。 0-1背包的思路是这样的,不断地向背包添加物品,对于一个物品,当背包容量为v时,选择是添加当前物品进背包还是不添加直 接用前面的安排。V[j][C] = max{V[j-1][C],V[j-1][C

2015-12-23 12:02:25 399

原创 动态规划学习之最长上升子序列

这个问题的关键是建立状态方程dp[i],保存算法a[i]为终点的最长上升子序列的长度,那么dp[i]的解题思路就是从前面找到比a[i]小,并且具有最大dp[j](0#include #include using namespace std; int main() { int n; cin>>n; int a[n]; for(int i=0;i<n;i++) cin>>a[i];

2015-12-23 10:33:11 365

原创 华为oj 简单密码破解

#include #include #define M 100 using namespace std; int main() { char s[M]; gets(s); //map store; char *p = s; while( *p!='\0') { if(islower(*p)) { if((*p)>=97&&(*p)<=99)

2015-12-21 17:12:02 777

原创 华为oj 查找输入整数二进制中1的个数

tips:把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0。那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作。 #include #include using namespace std; int findNumberOf1(int m) { int count = 0; while(m) { m &= m-1; ++count; }

2015-12-21 16:13:20 294

原创 华为oj 质数因子

#include #include #include using namespace std; bool isPrime(int n) { for(int j=2;j<=sqrt((double)n);j++) { if(n%j == 0) return false; } return true; } int main() { int k; cin>>k;

2015-12-21 12:31:25 334

原创 华为oj 矩阵乘法

#include #define M 100 using namespace std; int main() { int n,m,t; cin>>n>>m>>t; int a[M][M]; int b[M][M]; int i=0,j=0; for(;i<n;i++) for(j=0;j<m;j++) { cin>>a[i][j]; }

2015-12-21 10:52:28 438

原创 华为oj 句子逆序

#include #include #include #define M 1000 using namespace std; void reverse(string s) { size_t last = 0; string delim(" "); size_t index = s.find_first_of(delim,last); vector ret; while (index!=

2015-12-20 20:40:17 470

原创 华为oj 密码强度等级

#include #include #define N 10000 using namespace std; void GetPwdSecurityLevel(char *s) { //cout<<"in"<<endl; int grade = 0; int len = strlen(s); if(len<=4) grade += 5; else if(len>=5&&le

2015-12-01 08:53:06 548

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除