算法-->分治

一时失言乱红尘 2022-06-12 02:06 287阅读 0赞

package 分治算法;

import java.util.Scanner;

public class fenzhi {
static final int MAXNUM=4;
static int falsecoin(int coin[],int low,int hight) {
int i,num1,num2,num3;
int re=0;
num1=num2=num3=0;
if(low+1==hight) {
if(coin[low]num2){
re=falsecoin(coin,low+(hight-low)/2,hight);
return re;
}else {

}
}else {//是奇数
for(i=low;i<=low+(hight-low)/2-1;i++) {
num1=num1+coin[i];
}
for(i=low+(hight-low)/2+1;i<=hight;i++) {
num2=num2+coin[i];
}
num3=coin[low+(hight-low)/2];
if(num1>num2) {
re=falsecoin(coin,low+(hight-low)/2+1,hight);
return re;
}else if(num1<num2) {
re=falsecoin(coin,low,low+(hight-low)/2);
return re;
}else {

}
if(num1+num3==num2+num3) {
re=low+(hight-low)/2+1;
return re;
}
}
return re;
}
public static void main(String []args) {
int []coin=new int[MAXNUM];
int i,n;
int weizhi;
System.out.println(“分治算法求解假币问题”);
System.out.println(“请输入硬币的总个数”);
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
System.out.println(“请输入硬币的真假”);
for(i=0;i<n;i++) {
coin[i]=sc.nextInt();//输入硬币的真假
}
weizhi=falsecoin(coin,0,n-1);
System.out.println(“在上述”+MAXNUM+”个硬币中,第”+weizhi+”个硬币是假币”);
}
} Center

发表评论

表情:
评论列表 (有 0 条评论,287人围观)

还没有评论,来说两句吧...

相关阅读

    相关 算法-分治算法

    一、分治 1、定义:分治,也就是分而治之。 它的一般步骤是: ① 将原问题分解成若干个规模较小的子问题(子问题和原问题的结构一样,只是规模不一样)

    相关 算法思想-分治算法

    tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 推荐:[体系化学习Java(Java面试专

    相关 分治算法

    问题描述 在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的L型骨牌覆盖给定的特

    相关 分治算法

    [概述参考博客地址][Link 1] [算法笔记总目录][Link 2] 一、分治算法的设计思想: 1. 分–将问题分解为规模更小的子问题; 2. 治–将这些规

    相关 分治算法

    划分问题:整个问题划分成多个无关联的子问题。 递归求解:递归调用求解各个子问题。 合并问题:合并子问题的解,形成原始问题的解。 -------------------

    相关 分治算法

    分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题

    相关 分治算法

    分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题

    相关 分治算法

    一 分治算法介绍 1 分治法是一种很重要的算法 字面上的解释是“分而治之,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……,直