Notice: Undefined index: name in /usr/www/lib/views/home/viewtitle.html on line 188
-阅读程序 第 18 题
#include<bits/stdc++.h>
using namespace std;
int n,p[10], ans=20220504;
bool check ()
{
	for (int i=0; i<n-1; i++) if (p[i]>p[i+1]) return 0;
	return 1;
}
void dfs(int now)
{
	if (check())
	{
		ans=min(ans,now);
		return ;
	}
	for (int i=0; i<n; i++)
	for (int j=i; j<n; j++)
	if(p[i]>p[j])
	{
		swap(p[i],p[j]);
		dfs(now+1);
		swap(p[i],p[j]);
	}
}
int main()
{
	cin>>n;
	for (int i=0; i<n; i++) cin>>p[i];
	dfs(0);
	cout<<ans<<endl;
	return 0;
}
假设输入的n是不超过$2^{20}$的正整数,p[0...n-1]是一个 0到n-1的排列,完成下面的判断题和单选题: ●判断题
● 判断题
第 1 题 该算法的输出不可能等于大于n。( )
第 2 题 该算法可能在某种合法是输入下进入死循环( )
第 3 题 若将第17行的j=i改为j=0,输出的结果不会改变( )
● 单选题
第 4 题 1)若输入为3 2 1 0,则输出为( )
第 5 题 若输入为10 7 1 4 3 2 5 9 8 0 6,则输出为( )
第 6 题 目前学术界已证明该算法所求解的问题的时间复杂度最优可以做到( ) 。
第 7 题 若将第13行的min改为max,将第三行的ans=20220504改为ans=0,当输入为5 4 2 3 0 1时,输出为( )。

解答部分以后会开放。