C++ 分治思想 真假银币
#include "stdio.h"
#include "iostream"
#define MAXNUM 30 int FalseCoin(int coin[], int low, int heigh)
{
int i, sum1, sum2, sum3;
int re; sum1 = sum2 = sum3 = ;
if (low + == heigh)
{
if (coin[low] < coin[heigh])
{
re = low + ;
return re;
}
else
{
re = heigh + ;
return re;
}
}
if ((heigh - low + ) % == ) //n是偶数
{
for (i = low; i < low+(heigh - low) / ; i++)
{
sum1 = sum1 + coin[i];
}
for (i = low + (heigh - low) / + ; i < heigh; i++)
{
sum2 = sum2 + coin[i];
}
if (sum1 > sum2)
{
re = FalseCoin(coin, low + (heigh - low) / + , heigh);
return re;
}
else
{
}
}
else
{
for (i = low; i < low+(heigh - low) / - ; i++)
{
sum1 = sum1 + coin[i];
}
for (i = low + (heigh - low) / + ; i < heigh; i++)
{
sum2 = sum2 + coin[i];
}
sum3 = coin[low + (heigh - low) / ];
if (sum1 > sum2)
{
re = FalseCoin(coin, low + (heigh - low) / + , heigh);
return re;
}
else if (sum1 < sum2)
{
re = FalseCoin(coin, low, low + (heigh - low) / - );
return re;
}
else
{
}
if (sum1 + sum3 == sum2 + sum3)
{
re = low + (heigh - low) / + ;
return re;
}
}
} int main()
{
int coin[MAXNUM];
int i, n;
int weizhi;
scanf("%d",&n);
for (i = ; i < n; i++)
{
scanf("%d",coin[i]);
}
weizhi = FalseCoin(coin, , n - );
printf("在上述%d个银币中,第 %d 个银币是假的!\n",n,weizhi);
system("pause");
return ;
}
C++ 分治思想 真假银币的更多相关文章
- 分治思想的应用:C++实现快速排序和随机化的快速排序
分治思想的应用:C++实现快速排序和随机化的快速排序 原创 2014年09月08日 14:04:49 标签: 快速排序 / 随机化快速排序 / 排序算法 / 数据结构 947 1. 快速排序时冒泡排序 ...
- Big Data(一)分治思想
按照课程安排,接下来半年,我将会去上一个为期半年的大数据课程.第一课是马士兵老师机构的周老师所讲,这里单纯记录讲课的内容. 问题1: 我有一万个元素(比如数字或单词)需要存储? 如果查找某一个元素,最 ...
- 分治思想--快速排序解决TopK问题
----前言 最近一直研究算法,上个星期刷leetcode遇到从两个数组中找TopK问题,因此写下此篇,在一个数组中如何利用快速排序解决TopK问题. 先理清一个逻辑解决TopK问题→快速排序→递 ...
- bzoj3672/luogu2305 购票 (运用点分治思想的树上cdq分治+斜率优化dp)
我们都做过一道题(?)货币兑换,是用cdq分治来解决不单调的斜率优化 现在它放到了树上.. 总之先写下来dp方程,$f[i]=min\{f[j]+(dis[i]-dis[j])*p[i]+q[i]\} ...
- 分治思想 特别常用 Codeforces Beta Round #80 (Div. 1 Only) D
D. Time to Raid Cowavans time limit per test 4 seconds memory limit per test 70 megabytes input stan ...
- 分治思想求解X的M次幂方
package main import ( "fmt" ) //递归形式分治求解 func power(x, m int) int { { } else { y := power( ...
- LeetCode Array Easy 53. Maximum Subarray 个人解法 和分治思想的学习
Description Given an integer array nums, find the contiguous subarray (containing at least one numbe ...
- Codeforces 768B - Code For 1(分治思想)
768B - Code For 1 思路:类似于线段树的区间查询. 代码: #include<bits/stdc++.h> using namespace std; #define ll ...
- SDUT OJ 周赛 找有毒的那杯水(思维逻辑 + 分治思想 )
你打我啊 Time Limit: 500ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 最近看了一个非常好玩的题,如果有972杯水,其中有971个没有毒的,1个有 ...
随机推荐
- sql常用 语句总结
一,插入一个新字段:ALTER TABLE +表名+ADD COLUMN(字段名+ 类型) sql1 = 'ALTER TABLE klkl_4s_shop ADD COLUMN (name_rea ...
- python中生成器generator
通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素 ...
- Malformed UTF-8 characters, possibly incorrectly encoded 或中文乱码 (Uncaught InvalidArgumentException: Malformed UTF-8 characters, possibly incorrectly encoded in)
问题: Uncaught InvalidArgumentException: Malformed UTF-8 characters, possibly incorrectly encoded in 是 ...
- day36—javascript对表格table的操作应用(一)
转行学开发,代码100天——2018-04-21 今天记录一下,JavaScript对表格table的操作应用,包括表格元素的获取,创建,删除等. 一个普通的完整表格包括以下几个部分:table-&g ...
- mariadb(二)增删改
一.表的结构的增删改 添加数据类型 alter table 表名 add 字段 数据类型: #如果字段存在则会报错 Duplicate column name '字段' #修改数据类型 alter t ...
- git如何撤销工作区的修改
对工作区中文件的修改分为三种情况: (1)还没有git add (2)已经git add (3)已经git add,并再次进行修改 对于第一种情况,直接使用git checkout -- 文件,即可撤 ...
- MD5加密 及 防止重复提交
1.JSP页面 <%@page import="cn.gs.ly.app2.MD5Util"%> <%@page import="java.util.U ...
- oracle中not in 和 in的代替用法
-- not in 的替代写法select col from table1 where col not in(select col from table2); select col,table2.co ...
- HDU 2063 过山车 (匈牙利算法)
题目链接:HDU 2063 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩 ...
- tab区域折叠
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>co ...