从若干数中任取若干数使之和最接近另一数

开始学习编程时曾经练习过此类题,采用的是蛮力法,虽说找的数较全,但因指数级数据处理相当复杂且相当有限,现用动态规划处理,暂时没考虑标记所取的数。 #include <stdio.h> #include <math.h> double v[100]; double total(int i,double j) { double l,r,t; if(i==-1||j==0) return 0; l=total(i-1,j);r=total(i-1,j-v[i])+v[i]; t=fabs(l-j)<fabs(r-j) ? l:r; return ...

01背包学习

01背包动态规划思维不同于常规思维,需要学习前人的研究成果,但只要认真,看下百度百科,掌握了方法及参数的内容,基本上就差不多了,动态转移方程的理解熟悉后其实就能直接理解。 通过实例学习, 序號(i) 單個物重量w(i) 單個物品價值v(i) 1 22 15 2 18 18 3 9 10 4 24 13 5 15 20 包能承最大重35 求total(5,35)...

湖南高考数列题

有数列a(n)满足:2a(n)-a(1)=s(n)s(1);其中n是正整数,s(n)为各项之和,a(1)不等于0; 1,求,a(1),a(2)的值; 并求,a(n)的通项; 2,求数列n*a(n)各项之和; 以下为递归实现。 #include<stdio.h> int s(int n); int sum(int n); int f(int n)//a( n)=s(n-1)+1 { if(n==1) return 1; return s(n-1)+1; } int s(int n)//s(n)=s(n-1)+a(n) { if(n...
学习档案 | 2013-06-11 21:24 | 阅读 3192 次 | 评论 2 条

大数乘法

#include<stdio.h> #include <string.h> void bigintmul(char a[],char b[]) { int tempa[100]={0},tempb[100]={0},temp[200]={0},carry=0,i,j,m,n,num,k; m=strlen(a); n=strlen(b); num=n+m; for(i=m-1;i>=0;i--) tempa[m-1-i]=a[i]-&#39;0&#39;;//a数组的个位保存在temp[0],... for(i=n-1;i>=0;i--) tempb[n-1-i]=b...

组合数显示

#include<stdio.h> #define MAXN 4 #define NUM 8 int num[NUM],temp[MAXN]; void combine ( int n,int m) { int i,j; for(i=n; i>=m; i--) { temp[m-1]=num[i-1]; if(m>1) combine(i-1,m-1); else for(j=MAXN-1;j>=0; j--) printf("%2d",temp[j]); printf("\n"); ...
学习档案 | 2013-05-25 23:14 | 阅读 1706 次 | 评论 0 条

大数加法(个位数保存在数组[0]中

#include<stdio.h> #include <string.h> void add(char a[],char b[]) { int temp[101]={0},carry=0,i,m,n,num; m=strlen(a); n=strlen(b); num=n>m?n:m; for(i=m-1;i>=0;i--) temp[m-1-i]=a[i]-'0';//a数组的个位保存在temp[0],... for(i=n-1;i>=0;i--) temp[n-1-i]+=b[i]-'0'; for(i=0;i<=num...

递归练习4(拆半查找)

#include<stdio.h> int find(int *arr,int low, int hight,int key) { int mid=(hight+low)/2 ; if(hight<low) return -1;//处理不在数组内之数 ,此处参考网上技术,感觉很巧妙 if(arr[mid]!=key) { if(arr[mid]>key) return find(arr,low,mid-1,key); else return find(arr,mid+1,hight,key); } e...
学习档案 | 2013-04-19 16:10 | 阅读 1732 次 | 评论 0 条

1到9整数中取,二位数 乘 三位数=四位数 每数字互不相等

来自论坛 http://bbs.bccn.net/thread-404325-1-1.html #include<iostream> using namespace std; int main() { for(int i=12; i<=98; i++) for(int j=123;i*j>1234 &amp;&amp; i*j<9876 &amp;&amp;j<987;j++) if (i%10+ i/10+ j%10 + j/10%10 + j/100 + i*j%10 + j*i/10%10 + i*j/100%10 +i*j/...
学习档案 | 2013-04-17 14:28 | 阅读 1770 次 | 评论 0 条

递归练习3

http://bbs.bccn.net/thread-403058-1-1.html /*数矩形 #include<iostream> using namespace std; int f(int,int ); int f1(int ); int main() { cout<<f(4,4); return 0; } int f(int x,int y) { int min; min=x<y?x:y; if(min==1 ) return f1(x>y?...
学习档案 | 2013-04-05 20:50 | 阅读 2163 次 | 评论 0 条

递归练习二

/*求1,3/2,5/3,8/5 ,13/8....前N 项之和,以分母为基准*/ #include<iostream> using namespace std; float f(int n) { if(n==1) return 1; if(n==2) return 2; return f(n-1)+f(n-2); } float fsum(int n) { if(n==1) return 1; if(n==2) return (1+(float)3/2); return fsum( n-1...
学习档案 | 2013-03-29 19:16 | 阅读 1863 次 | 评论 0 条

递归练习

public class Jishuan { public final static String[] pai = { "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" }; // 把相同的牌放在数组的一个下标,便于_del(int[] dealpai )处理。 public int[] toChangePai(String str) { int[] dealpai = new int[20]; St...
学习档案 | 2013-03-26 20:26 | 阅读 1732 次 | 评论 0 条

1,2,3分区排序

http://blog.csdn.net/tiankong1206/article/details/48199345 TVeXTcpA8YBlksLPhEq5qnWWJnDj1DMSd3mrlbhoGnd2nkCyw7bHsvuW_WQNZXaYRn1b0p3EnVAS4bmfMrTNfd02kPghlyhttp://blog.csdn.net/zhaohanyu1185/article/details/9397183//登录 http://blog.csdn.net/xyz_fly/article/details/21301303//安卓 ht...
学习档案 | 2013-03-25 11:34 | 阅读 2056 次 | 评论 0 条
浏览231947次
最新评论