惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - Franky
N
Netflix TechBlog - Medium
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
量子位
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
M
MIT News - Artificial intelligence
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
aimingoo的专栏
aimingoo的专栏
博客园 - 三生石上(FineUI控件)
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
The Cloudflare Blog
Blog — PlanetScale
Blog — PlanetScale
F
Full Disclosure
G
Google Developers Blog
罗磊的独立博客
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Y
Y Combinator Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
J
Java Code Geeks
A
About on SuperTechFans
IT之家
IT之家
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
GbyAI
GbyAI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
The Register - Security
The Register - Security
U
Unit 42
D
Docker
Martin Fowler
Martin Fowler
L
LINUX DO - 热门话题
NISL@THU
NISL@THU
阮一峰的网络日志
阮一峰的网络日志
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Google DeepMind News
Google DeepMind News

博客园 - 大象怒怒

电脑嘀嘀响的原因(电脑变慢) javascript的调试工具 PHP 怎样取得本地化时间 PHP 解析xml(包含非英文字符) Linux下配置PHP运行环境 安装Oracle(粗略写了下) PHP5+apache_2.0.50+MySQL4.0+SQLServer安装方法 - 大象怒怒 - 博客园 About SAPLogon(SAP登录 密码不能输入) XP下安装SQL2000企业版 游戏代码部分-------client包(MyClient类和ReadThread类) 游戏代码部分-------server包(MyServer类和ReadThread类) 会计关键术语(全) SQL 新增/修改 表字段列的类型等 - 大象怒怒 电压表.ASM 交换机MAC地址表的形成过程动态演示 会计部分关键术语3 会计部分关键术语2 更改表字段的描述 SQL语句实现 vb 对注册表操作 会计部分关键术语1
12个球称三次的问题
大象怒怒 · 2006-10-31 · via 博客园 - 大象怒怒

这几天一直看到这样的贴子 讨论怎么称出那只不一样的球。
其实这不怎么难的,只要静下心来好好想一想, 理清自己的思路的话
肯定能想到的
下面是我的分析过程
L: Left    R:Right
①Weight (0+1+2+3,4+5+6+7)
|---L=R  -->[8,9,10,11]
|---②Weight (8,9)
|    |---L=R  -->[10,11]
|    |---③Weight (8,10)
|    |    |---L=R  -->[11]
|    |    |---L!=R -->[10]
|    |
|    |---L!=R -->[8,9]
|    |---③Weight (8,10)
|         |---L=R  -->[9]
|         |---L!=R -->[8]
|    
|---L>R  -->[0,1,2,3,4,5,6,7]
|---②Weight (0+4+11, 1+2+5)
|    |---L=R  -->[3,6,7]
|    |---③Weight (6,7)
|    |    |---L=R  -->[3]
|    |    |---L>R  -->[7]
|    |    |---L<R  -->[6]
|    |
|    |---L>R  -->[0,5]
|    |---③Weight (0,11)
|    |    |---L=R  -->[5]
|    |    |---L!=R -->[0]
|    |
|    |---L<R  -->[1,2,4]
|    |---③Weight (1,2)
|    |    |---L=R  -->[4]
|    |    |---L>R  -->[1]
|    |    |---L<R  -->[2]
|
|---L<R  -->[0,1,2,3,4,5,6,7]
|---②Weight (0+4+11, 1+2+5)
    |---L=R  -->[3,6,7]
    |---③Weight (6,7)
    |    |---L=R  -->[3]
    |    |---L>R  -->[6]
    |    |---L<R  -->[7]
    |
    |---L>R  -->[1,2,4]
    |---③Weight (1,2)
    |    |---L=R  -->[4]
    |    |---L>R  -->[2]
    |    |---L<R  -->[1]
    |
    |---L<R  -->[0,5]
    |---③Weight (0,11)
    |    |---L=R  -->[5]
    |    |---L!=R -->[0]
这几天也闲得有那么受不了了,于是就用eclipse 配了C/C++的开发环境,简单测试了一下自己称球的程序.
数据要求:全是int范围,12个,有且只有一个是不一样的分量。
输出结果:那只异样的球所在的下标

#include<iostream>
#include 
<fstream>
using namespace std;
int Weight(int ,int );
int main(int argc,char*[])
{
    
int aBall[12];
    
int Balance;
    ifstream File;
    File.open(
"Data.txt");
    
for (int i =0 ;i<12;i++){
        File
>>aBall[i];
    }
   
//File.close;
    Balance = Weight(aBall[0+ aBall[1+ aBall[2+ aBall[3],aBall[4+ aBall[5+ aBall[6+ aBall[7]) ;
    
switch (Balance){
        
case 0:    {//8 9 10 11
            Balance = Weight(aBall[8],aBall[9]) ;
            
switch (Balance) {
                
case 0:{                        
                    Balance 
= Weight(aBall[8],aBall[10]) ;
                    
switch (Balance) {
                        
case 0:    {
                            cout
<< 11<<endl;
                            
break;
                        }
                        
case 1:
                        
case 2:{
                            cout
<< 10<<endl;
                            
break;
                        }
                    }
                    
break;
                }
                
case 1:
                
case 2:{
                    Balance 
= Weight(aBall[8],aBall[10]) ;
                    
switch (Balance) {
                        
case 0:{
                            cout
<< 9<<endl;    
                            
break;
                        }
                        
case 1:
                        
case 2:{
                            cout
<< 8<<endl;
                            
break;
                        }
                    }
                    
break;
                }
            }
            
break;
        }
        
case 1:{//0 1 2 3 4 5 6 7
            Balance = Weight(aBall[0]+aBall[4]+aBall[11],aBall[1]+aBall[2]+aBall[5]) ;
            
switch (Balance) {
                
case 0: {//3 6 7    
                    Balance = Weight(aBall[6],aBall[7]);
                    
switch (Balance) {
                        
case 0:{
                            cout
<< 3<<endl;
                            
break;
                        }
                        
case 1:{
                            cout
<< 7<<endl;
                            
break;
                        }
                        
case 2:{
                            cout
<< 6<<endl;
                            
break;
                        }
                    }
                    
break;
                }
                
case 1:{//0 5
                    Balance = Weight(aBall[0],aBall[11]) ;
                    
switch (Balance) {
                        
case 0:{
                            cout
<< 5<<endl;
                            
break;
                        }
                        
case 1:
                        
case 2:{
                            cout
<< 0<<endl;
                            
break;
                        }
                    }
                    
break;
                }
                
case 2:{//1 2 4
                    Balance = Weight(aBall[1],aBall[2]) ;
                    
switch (Balance) {
                        
case 0:{
                            cout
<< 4<<endl;
                            
break;
                        }
                        
case 1:{
                            cout
<< 1<<endl;
                            
break;
                        }
                        
case 2:{
                            cout
<< 2<<endl;
                            
break;
                        }
                    }
                    
break;
                }
            }
            
break;
        }
        
case 2:    {
            Balance 
= Weight(aBall[0]+aBall[4]+aBall[11],aBall[1]+aBall[2]+aBall[5]) ;
            
switch (Balance) {
                
case 0:{//3 6 7
                    Balance = Weight(aBall[6],aBall[7]) ;
                    
switch (Balance) {
                        
case 0:{
                            cout
<< 3<<endl;
                            
break;
                        }
                        
case 1:{
                            cout
<< 6<<endl;
                            
break;
                        }
                        
case 2:{
                            cout
<< 7<<endl;
                            
break;
                        }
                    }
                    
break;
                }
                
case 2:{//0 5
                    Balance = Weight(aBall[0],aBall[11]) ;
                    
switch (Balance) {
                        
case 0:{
                            cout
<< 5<<endl;
                            
break;
                        }
                        
case 1:
                        
case 2:{
                            cout
<< 0<<endl;
                            
break;
                        }
                    }
                    
break;
                }
                
case 1:{//1 2 4
                    Balance = Weight(aBall[1],aBall[2]) ;
                    
switch (Balance) {
                        
case 0:{
                            cout
<< 4<<endl;
                            
break;
                        }
                        
case 1:{
                            cout
<< 2<<endl;
                            
break;
                        }
                        
case 2:{
                            cout
<< 1<<endl;
                            
break;
                        }
                    }
                    
break;
                }
            }
            
break;
        }
    }
    
return 0;
}
//main
int Weight(int iLeft,int iRight) {
    
int iRet;
    
if (iLeft == iRight)
        iRet 
= 0;
    
if (iLeft > iRight)
        iRet 
= 1;
    
if (iLeft < iRight)
        iRet 
= 2;
    
return iRet;

}