递归实现 动态规划 并找出一个最优解
从V中选一些数据,使之和与另一给定值j最接近,(不大于j)对于V中的某个元素,用选或不选进行分析,选用此数时放右子树
不选时放左子树,并进行递归 。
# -*- coding:utf-8-*-
###从V中选一些数,使之和与另一给定值j 最接近(不大于j)。 动态规划时,对于V中的某个元素,选或不选进行递归,选此数时放右子树,不选放左子树
###利用二叉树递归处理,动态规划 v ,并把每个右子树的值保存在的r_list中。
v=[1...
public class Node {
private Object value;
public Node(Object value) {
this.value = value;
}
public String toString() {
return value == null ? "" : value.toString();
}
}
/***************************************************/
public class Border {
...
http://cslibrary.stanford.edu/110/BinaryTrees.html
public class BinTree {
private Node root;
public static class Node {
private int data;
private Node left;
private Node right;
public Node(int data) {
this.data = data;
}
}
public BinTree() {
this....
最近接触到一款坦克风云的手游,其中有个军团争霸环节,涉及到军团排名,前三竞争很是激烈。有三个军
团A,B,C,战力分别排名1,2 ,3。每个军团由于级别不同,所容玩家成员个数也不一样。因A,C是盟军
团,且A+C的战力大于2倍B,觉得如果玩家组织好,让A,C军团的玩家进行适当的交换,就可以让第三名超
过第二名B。运用二数组交换数据,分别让二个数组之和尽可能接近思想(华为题好象二数组同长),可以利益最大化,当然操作
有很大难度,需要玩家相当信任且相当组织和服从。这里可以二个方案,1,可以以A,C中值为标准,找最
接近中值的数,2,让第...
八皇后是经典之作,近再读,想起一老题(http://bbs.bccn.net/thread-382842-1-1.html),借用此法。与B 版有异曲同工之妙。
一个排序问题求解
全班同学排成 6 排, A 、 B 、 C 、 D 、 E 、 F 等 6 人分别站在第 1 排到第 6 排 • 用 6 个 int 变量表示 A — F 的位置 –
A 不在第 1 排 à a != 1
A 与 B 前后相邻 (a == b + 1) || (a == b - 1)
C 在 D 前面 c == d - 1
E 在 B 的前两排 e == b...
收据金额汉字大写表示,写法和读法是不一样的,如1001,读法为:壹仟零壹元整,写法为:壹仟零佰零拾壹元整。现以目前实际中的用法,试写,没考虑分角情况。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int len,i;
char source[16],*cn[]={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
printf("请输入一个不大于16位的整数(阿拉伯数字表示)\n");
gets(source);...
开始学习编程时曾经练习过此类题,采用的是蛮力法,虽说找的数较全,但因指数级数据处理相当复杂且相当有限,现用动态规划处理,暂时没考虑标记所取的数。
#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)...
#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>
#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...