48分,后面4个点都错,99孩子吧
查看原帖
48分,后面4个点都错,99孩子吧
749708
Haechi楼主2022/8/18 22:15
#include<iostream>
using namespace std;
int main() {
	int n;
	cin >> n;
	int *arr = new int[n];
	int brr[3] = { 0 };//统计1、2、3的区间大小
	for (int i = 0; i < n; i++) {
		cin >> arr[i];
		brr[arr[i] - 1]++;
	}
	int sum = 0;
	int index = brr[0];
	for (int i = 1; i <= 3; i++) {//根据123的区间大小设置循环次数
		for (int j = 0; j < brr[i-1]; j++) {
			if (arr[j] != i) {//若不属于该区间应有的值,则往下寻找值,并交换
				for (int k = index; k < n; k++) {
					if (arr[k] == i) {//交换一个即可
						arr[k] = arr[j];
						arr[j] = i;
						sum++;
						break;
					}
				}
			}
		}
		index += brr[i];
	}
	cout << sum;
}
``
2022/8/18 22:15
加载中...