搜索
查看: 813|回复: 8
打印 上一主题 下一主题

计算排列逆序数

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-25 12:52:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
#include <stdio.h>
#include <stdlib.h>



int main()
{
        int k;

        printf("输入该排列的个数k:\n");
        scanf("%d",&k);
       
        ni(k);

        printf(ni(int k));

        js();
        system("pause");
        return 0;
}

int ni(int k)
{
        int i,j,u;
        int a[k];   /*用一个数组来表示该排列*/

        printf("输入该一个排列:\n");

        for(i=0;i<k;i++)
        {
                scanf("%d",&a[i]);
        }

    u=0;

        for(i=1;i<=k;i++)
        {
                for(j=i;j>=0;j--)
                {         /*要比较多少次,从最后一个元素开始比较*/
                        if(a[i]<a[j])                   /*当后一个数比前一个数小时*/
                                u++;
                }
        }                       /*计数器U加1*/

        printf("排列的逆序数是%d\n",u);   /*打印出逆序数的值*/

        return u;

}

void js()
{
        printf("请按任意键进行:\n");
        system("pause");

}


沙发
发表于 2014-10-25 13:15:58 | 只看该作者
你说的“排列逆序数”是啥?一个序列的逆序对的数目?
板凳
发表于 2014-10-28 17:44:49 | 只看该作者
rosynirvana 发表于 2014-10-25 13:15
你说的“排列逆序数”是啥?一个序列的逆序对的数目?

您好,请问移位运算符改变做操作数的值吗?比如int i=1;  i<<2;
地板
发表于 2014-10-28 17:45:13 | 只看该作者
rosynirvana 发表于 2014-10-25 13:15
你说的“排列逆序数”是啥?一个序列的逆序对的数目?

还有按位取反
5#
发表于 2014-10-28 18:31:04 | 只看该作者
小飞侠2009 发表于 2014-10-28 17:44
您好,请问移位运算符改变做操作数的值吗?比如int i=1;  i

不能啊,为什么不动手试一试呢
6#
 楼主| 发表于 2014-10-29 22:52:55 | 只看该作者
rosynirvana 发表于 2014-10-25 13:15
你说的“排列逆序数”是啥?一个序列的逆序对的数目?

线性代数里的
7#
 楼主| 发表于 2014-10-29 22:53:51 | 只看该作者
8#
 楼主| 发表于 2014-10-29 22:55:15 | 只看该作者
rosynirvana 发表于 2014-10-28 18:31
不能啊,为什么不动手试一试呢

不改会变的,
9#
发表于 2014-10-30 00:12:16 | 只看该作者

英文怎么说?我不熟悉翻译过的名词
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表