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个有 ...
随机推荐
- 2017年度最具商业价值人工智能公司TOP50 榜单发布
2017年度最具商业价值人工智能公司TOP50 榜单发布 未来最有赚钱潜力的50个人工智能项目都在这里了. 经过了60年的发展,人工智能在2017年,正式走向应用的元年. 从今年起,人工智能首次被写入 ...
- web复制到剪切板js
web复制到剪切板 clipboard.js 好使!开源项目,下载地址: https://github.com/zenorocha/clipboard.js 使用方法: 引入 clipboard.mi ...
- Linux 用户和组信息
linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号.在使用linux操作系统时候,通常我们会遇到对多用户进行管理.比如: 用户账号的添加. ...
- MongoDB性能分析
# mongostat --host=100.150.2.12 --port=27017 --authenticationDatabase=admin --username=root --passwo ...
- ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist
MySQL版本:mysql5.7.21 修改用户权限,刷新权限表,报1146 mysql> flush privileges; ERROR 1146 (42S02): Table 'mysql. ...
- PHP批量生成底部带编号二维码(二维码生成+文字生成图片+图片拼接合并)
PHP批量生成带底部编号二维码(二维码生成+文字生成图片+图片拼接合并) 需求: 输入编号如 : cb05-0000001 至 cb05-0000500 批量生成 以编号为名称的下图二维码,然后压缩 ...
- upc 组队赛18 STRENGTH【贪心模拟】
STRENGTH 题目链接 题目描述 Strength gives you the confidence within yourself to overcome any fears, challeng ...
- 进程之间的通讯Queue简单应用
#进程间通讯--Queue #Process有时需要通信的,操作系统提供了很多机制来实现进程之间的通讯 #而Queue就是其中一个 #1.Queue的使用 #可以使用multiprocessing模块 ...
- jQuery基础--选择器
2. 选择器 2.1. 什么是jQuery选择器 jQuery选择器是jQuery为我们提供的一组方法,让我们更加方便的获取到页面中的元素.注意:jQuery选择器返回的是jQuery对象. jQue ...
- [Linux] 017 网络命令与挂载命令
1. 网络命令:write 命令名称:write 命令所在路径:/usr/bin/write 执行权限:所有用户 语法:write [用户名] 功能描述:给用户发信息,以 Ctrl-d 保存结束 范例 ...