Live2D

逆序数计算

**

逆序数

**
今天学到线性代数的行列式,课后作业有算四阶行列式的,还没有学正确解法,只能硬解,
感觉可以用c实现逆序数判断正负,在本站找到c++函数,这里保存一下,下次有空用c写一个

#include<iostream>
using namespace std;
int n1 = 0, b[50];
int inversions(int a[], int n)//求逆序数
{
	n = n - 1;//5个元素0~4,最高位是4
	int i, j, ans = 0;
	for (j = 0; j <= n; j++)//每一位"j"
		for (i = j; i <= n; i++)//每位往后看逆序"从j到底与i比"
		{
			if (a[j] > a[i])
				ans++;
		}
	return ans;
}
void StrToArr(char a[])//字符转整形
{
	int i = 0;
	while (a[i] != '\0')
	{
		b[i] = (int)a[i];
		i++;
	}
	b[i] = a[i];//等同于b[i]='\0'
	n1 = i;//取得总位数
}
int main()
{
	int sum = 0;
	char a[50];
	cout << "请输入一串数字(不用空格,均单个按十以内算)" << endl;
	gets_s(a);
	StrToArr(a);
	sum = inversions(b, n1);
	cout << sum;
}
posted @ 2019-09-21 22:47  风吟承渊  阅读(553)  评论(0)    收藏  举报