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

推荐订阅源

IT之家
IT之家
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The GitHub Blog
The GitHub Blog
MyScale Blog
MyScale Blog
爱范儿
爱范儿
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队
Y
Y Combinator Blog
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
Martin Fowler
Martin Fowler
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
M
MIT News - Artificial intelligence
博客园 - Franky
V
Visual Studio Blog
I
InfoQ
V
V2EX
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
博客园 - 司徒正美
L
LangChain Blog

博客园 - 大象怒怒

电脑嘀嘀响的原因(电脑变慢) 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;

}