水题,写的时候时间不够了
给一个数,要n位相加得到,
注意1 0
我是先算最大的,存到数组里,
倒过来,第一位+1,最后能数的-1
#include<iostream>
using namespace std;
int aa[3009],n,num=0;
int bb[10000], cc[10000];
void select_sort(int* a, int n)
{
int i, j, min, t;
for (i = 0; i<n - 1; i++)
{
min = i;//查找最小值
for (j = i + 1; j<n; j++)
if (a[min]>a[j])
min = j;//交换
if (min != i)
{
bb[num] = min;
cc[num]=i;
t = a[min];
a[min] = a[i];
a[i] = t;
num++;
}
}
}
int main()
{
//freopen("in.txt", "r", stdin);
while (cin >> n)
{
num = 0;
for (int i = 0; i < n; i++)
{
cin >> aa[i];
}
select_sort(aa, n);
cout << num << endl;
for (int i = 0; i < num; i++)
{
cout << bb[i] << " "<<cc[i]<<endl;
}
}
}