题目:
分析:还是看答案提示才有思路
结论:每一行中次大中的最大。
提问:每一行最大的可能取到吗?
回答:一定那个不可能,而且我可以控制电脑也不可能取到,除非我傻了。
提问:每一行中次大中的最大那个我一定可以取到吗?
回答:可以,先取这一行就可以啦!(你不让我取这行次大的,
其实第一个问题不准确,某个可能是改行最大其他行第二大也是可以的
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int num;
cin>>num;
int A[num][num];
memset(A,-1,sizeof(A));
for(int i=0;i<num-1;i++)
{
for(int j=0;j<num-i-1;j++)
{
int t;
cin>>t;
A[i][i+1+j]=t;
A[i+1+j][i]=t;
}
}
int maxx=-1;
for(int i=0;i<num;i++)
{
int max1=max(A[i][0],A[i][1]),max2=min(A[i][0],A[i][1]);
for(int j=2;j<num;j++)
{
if(A[i][j]>max1)
{
max2=max1;
max1=A[i][j];
}
else if(A[i][j]>max2) max2=A[i][j];
}
maxx=max(maxx,max2);
}
cout<<1<<endl<<maxx;
}
分情况说明一下吧:
1.次大的最大的那个,和 所有中最大的在一行:
对手当然阻止你选最大的,然后因为阻挡你,所选择的那一行,只能有次大的了,但是你选择的是次大最大。之后阻止他选每行最大的就行啦。
2.次大的最大的那个,和 所有中最大的不在一行:
也很容易分析,自己想吧。