
程序代码:
#include <stdio.h>
size_t SelectSort( int a[], size_t n )
{
size_t SelectCount = 0;
for( size_t i=0; i+1<n; ++i )
{
size_t Select = i;
for( size_t j=i+1; j!=n; ++j )
{
if( a[Select] > a[j] )
{
Select = j;
++SelectCount;
}
}
int t = a[i];
a[i] = a[Select];
a[Select] = t;
}
return SelectCount;
}
//////////// 以下测试代码是用 C++ 写的 ////////////
#include <vector>
#include <algorithm>
#include <ranges>
#include <print>
void foo( size_t n )
{
size_t max_result = 0;
std::vector<std::vector<int>> max_seqs;
auto a = std::views::iota(1,(int)(n+1)) | std::ranges::to<std::vector>();
for( bool c=true; c; c=std::ranges::next_permutation(a).found )
{
std::vector<int> b = a;
size_t r = SelectSort( &b[0], b.size() );
if( r > max_result )
{
max_seqs.clear();
max_result = r;
}
if( r == max_result )
max_seqs.push_back( a );
}
printf( "N=%zu, 最大赋值次数%zu, 一共%zu种:\n", n, max_result, max_seqs.size() );
for( const auto& s : max_seqs )
std::println( " {{{:n}}}", s );
}
int main( void )
{
for( size_t n=1; n!=13; ++n )
foo( n );
}
输出

程序代码:
N=1, 最大赋值次数0, 一共1种:
{1}
N=2, 最大赋值次数1, 一共1种:
{2, 1}
N=3, 最大赋值次数2, 一共3种:
{2, 3, 1}
{3, 1, 2}
{3, 2, 1}
N=4, 最大赋值次数4, 一共3种:
{3, 4, 2, 1}
{4, 3, 1, 2}
{4, 3, 2, 1}
N=5, 最大赋值次数6, 一共7种:
{3, 5, 4, 2, 1}
{4, 3, 5, 2, 1}
{4, 5, 3, 2, 1}
{5, 4, 1, 3, 2}
{5, 4, 2, 1, 3}
{5, 4, 3, 1, 2}
{5, 4, 3, 2, 1}
N=6, 最大赋值次数9, 一共7种:
{4, 6, 5, 3, 2, 1}
{5, 4, 6, 3, 2, 1}
{5, 6, 4, 3, 2, 1}
{6, 5, 4, 1, 3, 2}
{6, 5, 4, 2, 1, 3}
{6, 5, 4, 3, 1, 2}
{6, 5, 4, 3, 2, 1}
N=7, 最大赋值次数12, 一共11种:
{4, 7, 6, 5, 3, 2, 1}
{5, 7, 6, 4, 3, 2, 1}
{6, 5, 4, 7, 3, 2, 1}
{6, 5, 7, 4, 3, 2, 1}
{6, 7, 5, 4, 3, 2, 1}
{7, 6, 5, 1, 4, 3, 2}
{7, 6, 5, 3, 2, 1, 4}
{7, 6, 5, 4, 1, 3, 2}
{7, 6, 5, 4, 2, 1, 3}
{7, 6, 5, 4, 3, 1, 2}
{7, 6, 5, 4, 3, 2, 1}
N=8, 最大赋值次数16, 一共11种:
{5, 8, 7, 6, 4, 3, 2, 1}
{6, 8, 7, 5, 4, 3, 2, 1}
{7, 6, 5, 8, 4, 3, 2, 1}
{7, 6, 8, 5, 4, 3, 2, 1}
{7, 8, 6, 5, 4, 3, 2, 1}
{8, 7, 6, 5, 1, 4, 3, 2}
{8, 7, 6, 5, 3, 2, 1, 4}
{8, 7, 6, 5, 4, 1, 3, 2}
{8, 7, 6, 5, 4, 2, 1, 3}
{8, 7, 6, 5, 4, 3, 1, 2}
{8, 7, 6, 5, 4, 3, 2, 1}
N=9, 最大赋值次数20, 一共15种:
{5, 9, 8, 7, 6, 4, 3, 2, 1}
{6, 9, 8, 7, 5, 4, 3, 2, 1}
{7, 9, 8, 6, 5, 4, 3, 2, 1}
{8, 7, 6, 5, 9, 4, 3, 2, 1}
{8, 7, 6, 9, 5, 4, 3, 2, 1}
{8, 7, 9, 6, 5, 4, 3, 2, 1}
{8, 9, 7, 6, 5, 4, 3, 2, 1}
{9, 8, 7, 6, 1, 5, 4, 3, 2}
{9, 8, 7, 6, 4, 3, 2, 1, 5}
{9, 8, 7, 6, 5, 1, 4, 3, 2}
{9, 8, 7, 6, 5, 3, 2, 1, 4}
{9, 8, 7, 6, 5, 4, 1, 3, 2}
{9, 8, 7, 6, 5, 4, 2, 1, 3}
{9, 8, 7, 6, 5, 4, 3, 1, 2}
{9, 8, 7, 6, 5, 4, 3, 2, 1}
N=10, 最大赋值次数25, 一共15种:
{6, 10, 9, 8, 7, 5, 4, 3, 2, 1}
{7, 10, 9, 8, 6, 5, 4, 3, 2, 1}
{8, 10, 9, 7, 6, 5, 4, 3, 2, 1}
{9, 8, 7, 6, 10, 5, 4, 3, 2, 1}
{9, 8, 7, 10, 6, 5, 4, 3, 2, 1}
{9, 8, 10, 7, 6, 5, 4, 3, 2, 1}
{9, 10, 8, 7, 6, 5, 4, 3, 2, 1}
{10, 9, 8, 7, 6, 1, 5, 4, 3, 2}
{10, 9, 8, 7, 6, 4, 3, 2, 1, 5}
{10, 9, 8, 7, 6, 5, 1, 4, 3, 2}
{10, 9, 8, 7, 6, 5, 3, 2, 1, 4}
{10, 9, 8, 7, 6, 5, 4, 1, 3, 2}
{10, 9, 8, 7, 6, 5, 4, 2, 1, 3}
{10, 9, 8, 7, 6, 5, 4, 3, 1, 2}
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
N=11, 最大赋值次数30, 一共19种:
{6, 11, 10, 9, 8, 7, 5, 4, 3, 2, 1}
{7, 11, 10, 9, 8, 6, 5, 4, 3, 2, 1}
{8, 11, 10, 9, 7, 6, 5, 4, 3, 2, 1}
{9, 11, 10, 8, 7, 6, 5, 4, 3, 2, 1}
{10, 9, 8, 7, 6, 11, 5, 4, 3, 2, 1}
{10, 9, 8, 7, 11, 6, 5, 4, 3, 2, 1}
{10, 9, 8, 11, 7, 6, 5, 4, 3, 2, 1}
{10, 9, 11, 8, 7, 6, 5, 4, 3, 2, 1}
{10, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1}
{11, 10, 9, 8, 7, 1, 6, 5, 4, 3, 2}
{11, 10, 9, 8, 7, 5, 4, 3, 2, 1, 6}
{11, 10, 9, 8, 7, 6, 1, 5, 4, 3, 2}
{11, 10, 9, 8, 7, 6, 4, 3, 2, 1, 5}
{11, 10, 9, 8, 7, 6, 5, 1, 4, 3, 2}
{11, 10, 9, 8, 7, 6, 5, 3, 2, 1, 4}
{11, 10, 9, 8, 7, 6, 5, 4, 1, 3, 2}
{11, 10, 9, 8, 7, 6, 5, 4, 2, 1, 3}
{11, 10, 9, 8, 7, 6, 5, 4, 3, 1, 2}
{11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
N=12, 最大赋值次数36, 一共19种:
{7, 12, 11, 10, 9, 8, 6, 5, 4, 3, 2, 1}
{8, 12, 11, 10, 9, 7, 6, 5, 4, 3, 2, 1}
{9, 12, 11, 10, 8, 7, 6, 5, 4, 3, 2, 1}
{10, 12, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1}
{11, 10, 9, 8, 7, 12, 6, 5, 4, 3, 2, 1}
{11, 10, 9, 8, 12, 7, 6, 5, 4, 3, 2, 1}
{11, 10, 9, 12, 8, 7, 6, 5, 4, 3, 2, 1}
{11, 10, 12, 9, 8, 7, 6, 5, 4, 3, 2, 1}
{11, 12, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
{12, 11, 10, 9, 8, 7, 1, 6, 5, 4, 3, 2}
{12, 11, 10, 9, 8, 7, 5, 4, 3, 2, 1, 6}
{12, 11, 10, 9, 8, 7, 6, 1, 5, 4, 3, 2}
{12, 11, 10, 9, 8, 7, 6, 4, 3, 2, 1, 5}
{12, 11, 10, 9, 8, 7, 6, 5, 1, 4, 3, 2}
{12, 11, 10, 9, 8, 7, 6, 5, 3, 2, 1, 4}
{12, 11, 10, 9, 8, 7, 6, 5, 4, 1, 3, 2}
{12, 11, 10, 9, 8, 7, 6, 5, 4, 2, 1, 3}
{12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 1, 2}
{12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1}