ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ 分治思想 真假银币

2019-07-07 12:51:02  阅读:317  来源: 互联网

标签:银币 sum1 分治 sum2 C++ re low heigh coin


 1 #include "stdio.h"
 2 #include "iostream"
 3 #define MAXNUM 30
 4 
 5 int FalseCoin(int coin[], int low, int heigh)
 6 {
 7 int i, sum1, sum2, sum3;
 8 int re;
 9 
10 sum1 = sum2 = sum3 = 0;
11 if (low + 1 == heigh)
12 {
13 if (coin[low] < coin[heigh])
14 {
15 re = low + 1;
16 return re;
17 }
18 else
19 {
20 re = heigh + 1;
21 return re;
22 }
23 }
24 if ((heigh - low + 1) % 2 == 0) //n是偶数
25 {
26 for (i = low; i < low+(heigh - low) / 2; i++)
27 {
28 sum1 = sum1 + coin[i];
29 }
30 for (i = low + (heigh - low) / 2 + 1; i < heigh; i++)
31 {
32 sum2 = sum2 + coin[i];
33 }
34 if (sum1 > sum2)
35 {
36 re = FalseCoin(coin, low + (heigh - low) / 2 + 1, heigh);
37 return re;
38 }
39 else
40 {
41 }
42 }
43 else
44 {
45 for (i = low; i < low+(heigh - low) / 2 - 1; i++)
46 {
47 sum1 = sum1 + coin[i];
48 }
49 for (i = low + (heigh - low) / 2 + 1; i < heigh; i++)
50 {
51 sum2 = sum2 + coin[i];
52 }
53 sum3 = coin[low + (heigh - low) / 2];
54 if (sum1 > sum2)
55 {
56 re = FalseCoin(coin, low + (heigh - low) / 2 + 1, heigh);
57 return re;
58 }
59 else if (sum1 < sum2)
60 {
61 re = FalseCoin(coin, low, low + (heigh - low) / 2 - 1);
62 return re;
63 }
64 else
65 {
66 }
67 if (sum1 + sum3 == sum2 + sum3)
68 {
69 re = low + (heigh - low) / 2 + 1;
70 return re;
71 }
72 }
73 }
74 
75 int main()
76 {
77 int coin[MAXNUM];
78 int i, n;
79 int weizhi;
80 scanf("%d",&n);
81 for (i = 0; i < n; i++)
82 {
83 scanf("%d",coin[i]);
84 }
85 weizhi = FalseCoin(coin, 0, n - 1);
86 printf("在上述%d个银币中,第 %d 个银币是假的!\n",n,weizhi);
87 system("pause");
88 return 0;
89 }

 

标签:银币,sum1,分治,sum2,C++,re,low,heigh,coin
来源: https://www.cnblogs.com/zhibei/p/11145995.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有