![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程之美
yzx41099296
这个作者很懒,什么都没留下…
展开
-
编程之美2.1-2.3
2.1求二进制数中1的个数int count(int n){ int count=0; while(n) { n&=n-1; count++; } return count; }2.2 求N的阶乘末尾有多少个0,求N的阶乘的二进制表示最低位1的位置int z原创 2012-08-25 13:18:01 · 410 阅读 · 0 评论 -
2.21 只考加法的面试题
[question]我们知道:1+2=3; 4+5=9; 2+3+4=9;等式左边都是两个以上连续的自然数相加,那么是不是所有的整数都可以写成这种形式呢?写一个程序,对于一个32位正整数,输出它所有的连续自然数之和的算式。 [analysis]可以发现任意自然数序列其实是公差为1的等差数列,那么数列前N项和公式转载 2012-09-18 14:08:36 · 682 阅读 · 0 评论 -
2.20 程序理解和时间分析
这是《编程之美》的2.20题目,给出一段C#代码,要求不用电脑,理解程序并回答问题。下面是从C#代码中改写成的C++代码:[cpp] view plaincopy#include #include using namespace std; int main() { int rg[] = {2,3,4,5,转载 2012-09-18 10:20:48 · 514 阅读 · 0 评论 -
2.19 区间重合判断
#include #define N 6 int sort(int x[], int y[], int b, int e){ int tmpx,tmpy,i,j,m; i=b; j=e; tmpx=x[i]; tmpy=y[i]; while(i<j) { while(x[j]>=tmpx&&i<j) j--; x[i]=x[j]; y[i]=y[j];原创 2012-09-17 19:35:10 · 1038 阅读 · 0 评论 -
2.18 数组分割
题目概述:有一个没有排序,元素个数为2N的正整数数组。要求把它分割为元素个数为N的两个数组,并使两个子数组的和最接近。假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。显然:S(k, 1) = {A[i] | 1S(k, k) = {A[1]+A[2]+…+A[k]}S(k, i) = S(k-原创 2012-09-15 16:59:52 · 676 阅读 · 0 评论 -
2.16 求数组中最长的递增子序列
#include #include int max(int *a,int len)//求数组的最大元素{ int i,max; max=a[0]; for(i=1;i<len;i++) { if(a[i]>max) max=a[i]; } return max;}int LIS(int * array,int n){ int i,j; int *lis=(in原创 2012-09-13 18:11:54 · 628 阅读 · 0 评论 -
2.17 数组循环移位
#include #include void reverse(char * array,int a,int b){ char tmp; for(;a<b;a++,b--) { tmp=array[a]; array[a]=array[b]; array[b]=tmp; }}void shift(char * str,int n,int k){ k=k%n; r原创 2012-09-13 19:24:35 · 340 阅读 · 0 评论 -
2.14 求子数组之和的最大值
#include using namespace std;int maxsum(int *src,int n,int &spos,int &epos){ int start,all,i,tmppos; all=start=src[n-1]; tmppos=spos=epos=n-1; for(i=n-2;i>=0;i--) { if(start>=0) { start原创 2012-09-13 17:33:42 · 389 阅读 · 0 评论 -
2.10 寻找数组中的最大值和最小值
#include int max,min;void maxmin(int * src, int n){ int i; if(n&1==1) { i=1; } else { i=0; } max=min=src[0]; for(i;i<n-1;i++) { if(src[i]>src[i+1]) { if(src[i]>max) max=src原创 2012-09-10 23:25:39 · 356 阅读 · 0 评论 -
2.9 Fiboncaai 数列
#include #include using namespace std;class Matrix{public: Matrix(int mm, int nn) { m=mm;n=nn; int i,j; data=new int *[m]; for(i=0;i<m;i++) {原创 2012-09-10 16:53:07 · 335 阅读 · 0 评论 -
编程之美2.8 找符合条件的整数 求十进制表示只含1和0的正整数
#include#includeusing namespace std;vector minzeroone(int N){ int i,j,noupdate=0; vector > bigint; vector mvec; for(i=0;i<N;i++) bigint.push_back(mvec); bigint[1].push_back(0); for(i=1,原创 2012-08-28 11:43:00 · 1044 阅读 · 0 评论 -
编程之美2.5寻找最大的K个数
使用最小堆:void minheap(int *des,int i,int len){ int tmp,p; int cur=i; while(cur<len) { p=2*cur; if(p>len) break; if(des[(p+1)-1]<des[(p)-1]&&(p+1)<len) p++; if(des[p-1]<des[cur-1])原创 2012-08-26 22:43:05 · 515 阅读 · 0 评论 -
编程之美 2.4
2.4问题1:1的数目问题2:F(N)=N的最大N是多少扩展题:二进制1的数目问题1:int onenumber(int n){ int num=0,low=0,cur=0,high=0,pac=1; while(n/pac!=0) { low=n-(n/pac)*pac; cur=(n/pac)%10; high=(n/pac)/10; switc原创 2012-08-26 16:23:13 · 594 阅读 · 0 评论 -
编程之美2.6-2.7 最大公约数
bool iseven(int a){ if(a&1==0) return true; else return false;}int gcd(int a,int b){ int result=1,tmp; while((b!=0)&&(a!=0)) { if(a<b) { tmp=a; a=b; b=tmp; } if(iseven(原创 2012-08-27 19:44:13 · 388 阅读 · 0 评论