#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;
}
#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;
}