首页 > 试题广场 >

下面程序的功能是输出数组的全排列,选择正确的选项,完成其功能

[不定项选择题]
下面程序的功能是输出数组的全排列,选择正确的选项,完成其功能。
void perm(int list[], int k, int m)
{
    if (    )
    {
        copy(list,list+m,ostream_iterator<int>(cout," "));
        cout<<endl;
        return;
    }
    for (int i=k; i<=m; i++)
    {
        swap(&list[k],&list[i]);
        (    );
        swap(&list[k],&list[i]);
    }
}

  • k!=m 和 perm(list,k+1,m)
  • k==m 和 perm(list,k+1,m)
  • k!=m 和 perm(list,k,m)
  • k==m 和 perm(list,k,m)
回溯算法
发表于 2020-08-24 14:40:41 回复(0)
copy(list,list+m,ostream_iterator<int>(cout," ")); 
这行代码的含义为,输出从list开头到list+m这一段内的所有元素,元素之间用空格隔开。
只有当排列结束之后才会进行一次输出,因此第一个空为k==m。
下面的for循环,是交换区间内元素的位置进行排列。里面用到了递归,对后面的元素重复排序过程,缩小区间。
因此第二个空为perm(list,k+1,m)。
发表于 2021-01-21 19:07:02 回复(0)
标你*的多选
发表于 2023-06-04 17:55:31 回复(1)
此题是多选题😅
发表于 2024-03-08 20:23:20 回复(0)
好好好你这么整是吧,给我整个多选迷惑我

发表于 2023-10-12 19:26:56 回复(0)
全排列问题应该是k啊,为什么是k+1呢
发表于 2021-01-17 12:56:01 回复(2)