#include <iostream>
#include 
<string>
using namespace std;

//平衡点:假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点
bool FindBalanceNum(int num[], int n)
{
    
int sum = 0;
    
bool result = false;
    
for(int i = 0; i < n; i++)
    
{
        sum 
+= num[i];
    }

    
    
int temp = 0;
    
for(int i = 0; i < n; i++)
    
{
        
if(i > 0)
            temp 
+= num[i - 1];
        
if(temp == (sum - num[i]) / 2)
        
{
            cout
<<num[i]<<endl;
            result 
= true;
            
continue;
        }
        
    }

    
return result;
}


//支配数:数组中某个元素出现的次数大于数组总数的一半时就成为支配数
int FindDominateNum(int num[], int n)
{
    
int result = 0;
    
int count = 0;

    
for(int i = 0; i < n; i++)
    
{
        
if(count == 0)
        
{
            result 
= num[i];
            count 
= 1;
        }

        
else
        
{
            
if(result == num[i])
            
{
                count
++;
            }

            
else
            
{
                count
--;
            }

        }

    }

    
return result;
}


void main()
{
    
int numbanlance[8= {1,3,5,7,8,25,4,20};
    
int numDominate[10= {3,3,1,2,3,3,3,4,4,4};
    FindBalanceNum(numbanlance, 
8);
    cout
<<FindDominateNum(numDominate, 10);
    
int z;
    cin
>>z;
}
posted on 2009-07-11 21:24  Jackill  阅读(407)  评论(0编辑  收藏  举报