#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;
}
转载于:https://www.cnblogs.com/jackill/archive/2009/07/11/1521529.html