A1064. 排名计算

#include <iostream>

using namespace std;
int a[6];
void cri()
{
    int  flag=1;
    if(a[5]==2||a[5]==3)
        flag=0;
    if(a[1]<3&&a[5]!=1)
        flag=0;
    else if(a[1]>=3&&a[5]==1)
        flag=0;
    if(a[2]<3&&a[2]!=2)
        flag=0;
    else if(a[2]>=3&&a[2]==2)
        flag=0;
    if(a[3]<3&&a[1]!=5)
        flag=0;
    else if(a[3]>=3&&a[1]==5)
        flag=0;
    if(a[4]<3)
    {
        if(a[3]==1)
            flag=0;
    }
    else if(a[4]>=3&& a[3]!=1)
        flag=0;
    if(a[5]<3)
    {
        if(a[4]!=1)
            flag=0;
    }
    else if(a[5]>=3&&a[4]==1)
        flag=0;
    if(flag==1)
        for(int i=1; i<=5; i++)
            cout<<a[i]<<" ";
}
void all(int k)
{
    for(int i=1; i<6; i++)
    {

        a[k]=i;
        if(k<5)
            all(k+1);
        else
        {
            int flag=1;
            for(int m=1;m<=5;m++)
            {
                for(int n=1;n<=5;n++)
                {
                    if(m!=n)
                    if(a[m]==a[n])
                        flag=0;
                }
            }

            if(flag==1)
            {
                cri();
    /*             for(int u=1;u<=5;u++)
                    cout<<a[u]<<" ";
                 cout<<endl;
                 */
            }


        }

    }

}
int main()
{
    all(1);

    return 0;
}

  题目:http://www.tsinsen.com/A1063

可以自己用笔做,也可以代码做。

用笔快,但是可能不给分。

代码主要思路就是求全排列,然后一个个的试。

函数all是求全排列,这里我做的偷懒,直接求组合了然后再筛选。也就是我先求的11111~55555,在筛除重复的。

cri是筛选。

把我的注释显示出来会打印出全排列。cout外面的/*.

转载于:https://www.cnblogs.com/SweetBeens/p/6420702.html

### 百分位排名计算方法 百分位排名(Percentile Rank)用于表示某个数据点在数据集中所处的相对位置。具体来说,第 $ p $ 百分位数表示数据集中有 $ p\% $ 的数据小于或等于该值。因此,百分位排名可以用于衡量某个数据点在整个数据分布中的位置[^1]。 #### 百分位排名计算公式 百分位排名计算公式如下: $$ PR = \left( \frac{L + 0.5E}{N} \right) \times 100 $$ 其中: - $ PR $ 表示百分位排名; - $ L $ 表示低于该数据点的个数; - $ E $ 表示等于该数据点的个数; - $ N $ 表示数据集中的总数据个数。 该公式可以用于计算某个特定值在数据集中的相对位置,适用于重复值和非重复值的情况。 #### 示例计算 假设有以下数据集表示学生的考试成绩: $$ [70, 75, 80, 80, 85, 90, 95] $$ 若要计算成绩 80 的百分位排名: - $ L = 2 $(低于 80 的数据个数); - $ E = 2 $(等于 80 的数据个数); - $ N = 7 $(数据集总个数)。 代入公式: $$ PR = \left( \frac{2 + 0.5 \times 2}{7} \right) \times 100 = \left( \frac{3}{7} \right) \times 100 \approx 42.86 $$ 因此,成绩 80 的百分位排名约为 42.86,表示有 42.86% 的学生成绩低于或等于 80。 #### 在 Excel 中的实现 在 Excel 中,可以使用 `PERCENTRANK.INC` 函数计算百分位排名。例如,若数据位于 A1:A7,要计算 80 的百分位排名,可以使用以下公式: ```excel =PERCENTRANK.INC(A1:A7, 80) ``` 该函数会返回 80 在数据集中的百分位排名。 #### SQL 中的实现方法 在 SQL 中,可以通过排序计算累计分布的方式实现百分位排名。例如,可以先对数据进行排序,然后计算运行总和与总数据的比例来确定百分位排名。该方法适用于大型数据集,并且可以通过窗口函数实现精确的百分位排名计算[^4]。 以下是一个 SQL 示例,计算每个记录的百分位排名: ```sql SELECT value, (ROW_NUMBER() OVER (ORDER BY value) - 1) / (COUNT(*) OVER () - 1) * 100 AS percentile_rank FROM data_table; ``` 该查询计算了每个值的百分位排名,适用于非重复数据。 #### 适应性改进 在处理包含重复值的数据集时,应考虑对百分位排名公式进行调整,以确保结果的准确性。例如,在 Excel 中,`PERCENTRANK.INC` 函数已经自动处理了重复值的情况。此外,在 SQL 中,可以使用 `RANK()` 或 `DENSE_RANK()` 函数配合累计分布函数来更精确地计算百分位排名。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值