开始学习编程时曾经练习过此类题,采用的是蛮力法,虽说找的数较全,但因指数级数据处理相当复杂且相当有限,现用动态规划处理,暂时没考虑标记所取的数。
#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背包动态规划思维不同于常规思维,需要学习前人的研究成果,但只要认真,看下百度百科,掌握了方法及参数的内容,基本上就差不多了,动态转移方程的理解熟悉后其实就能直接理解。
通过实例学习,
序號(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...
#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]-'0';//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");
...
#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...
#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...
来自论坛 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 && i*j<9876 &&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/...
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?...
/*求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...
public class Jishuan {
public final static String[] pai = { "一", "二", "三", "四", "五", "六", "七",
"八", "九", "十", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖", "拾" };
// 把相同的牌放在数组的一个下标,便于_del(int[] dealpai )处理。
public int[] toChangePai(String str) {
int[] dealpai = new int[20];
St...
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...