TOJ-5395 大于中值的边界元素

Posted 二十四桥明月夜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TOJ-5395 大于中值的边界元素相关的知识,希望对你有一定的参考价值。

描述

给定一个二维数组,求二维数组的边界元素中,大于二维数组“中值”的元素个数。这里的“中值”定义为一个元素序列中:

(1)当元素个数为奇数时,即为中间大的元素;

(2)当元素个数为偶数时,为中间大的两个元素的平均值。

输入

第一行为两个元素n和m,表示二维数组的行数和列数。

接下来又n行,每行m个整数,表示数组元素值。

1<=n,m<=100。

输出

输出大于中值的元素个数。

样例输入

 3 3
1 2 3
2 3 1
4 1 5

样例输出

3

提示

中值为2,因此边界元素中大于2的元素个数为3个。

代码测试:

技术分享图片
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main(){
    vector<vector<int> > v1;
    vector<int> v2;
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++){
        vector<int> p;
        for(int j=0;j<m;j++){
            int a;
            cin>>a;
            p.push_back(a);
            v2.push_back(a);
        }
        v1.push_back(p);
    }
    sort(v2.begin(),v2.end());
    int num;
    if(n*m%2!=0) num=v2[n*m/2];
    else num=(v2[n*m/2]+v2[n*m/2+1])*1.0/2;
    int cnt=0;
    for(int i=0;i<v1.size();i++){
        for(int j=0;j<v1[i].size();j++){
            if(i==0||j==0||i==v1.size()-1||j==v1[i].size()-1){
                if(v1[i][j]>num)
                    cnt++;
            }
        }
    }
    cout<<cnt<<endl;
} 
View Code

 




以上是关于TOJ-5395 大于中值的边界元素的主要内容,如果未能解决你的问题,请参考以下文章

数据结构 设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值 可以和表中的元素相同,也可以不同)

设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表BC,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A中的元素为非零整数,要求BC表利用A表的结点)。

设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表BC,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A中的元素为非零整数,要求BC表利用A表的结点)。

快速排序的错误

开平方根算法

算法_五大经典查找算法