共42道题,当前是第39题
题目描述
在二维平面内有若干个点,每个点的视野价值定义为其左下方的点的数目,即 vali=∑j [xj <xi]and[yj < yi],求出每个点的视野价值并输出最具有视野价值的点的编号,如果有多个这样的点,输出其中最大的编号。
输入说明:
第一行一个正整数 n ,表示二维平面中点的个数。
接下来 n 行,每行两个数,表示编号为 i 的点的坐标。
输出说明
第一行 n 个正整数,表示编号为 i 的点的视野价值。
第二行一个正整数,表示视野价值最高的点的编号,如果有多个视野价值相同的点,则输出编号最大的那个。
样例输入
5
2 3
3 2
1 1
3 5
5 3
样例输出
1 1 0 2 2
请补全下面的代码。
1 #include 2 using namespace std; 3 const int N = 100; 4 int x[N], y[N], f[N], n, max_f, ans; 5 int main(){ 6 cin >> n; 7 for (int i = 1; i <= n; ++i) cin >> x[i] >> y[i]; 8 for (int i = 1; i <= n; ++i){ 9 f[i] = ___ (1) ___; 10 for (int j = 1; j <= n; ++j){ 11 if (x[j] < x[i] && ___ (2)___ ) 12 ___ (3) ___ 13 } 14 if ( ___ (4) ___){ 15 max_f = f[i]; 16 ___ (5) ___; 17 } 18 } 19 for (int i = 1; i <= n; ++i) cout << f[i] << " "; 20 cout << endl << ans << endl; 21 return 0; 22 }
通过枚举的方式计算每个点的战斗力,并且将每个点的战斗力与全局最大值进行判断。要注意的是题目中提出了在战斗力相同的情况下选择编号大的点,所以代码中是从小到大枚举点,并在 f[i] 与 max_f 相等时也进行答案的更新。
1. A。
2. B。
3. B。
4. B。
5. C。
___ (1) ___ 处应该填()
___ (2) ___ 处应该填()
___ (3) ___ 处应该填()
___ (4) ___ 处应该填()
___ (5) ___ 处应该填()
陈伦制作 版权所无 粤ICP备16127491号-1