多题目

完善程序2

(排列数)输输入两个正整数 , 在 中任取 个数,按字 典序从小到大输出所有这样的排列。 

例如: 输入: 3 2 

输出: 1 2 

1 3 

2 1 

2 3 

3 1 

3 2

#include <iostream>
#include <cstring>
using namespace std;
const int SIZE = 25;
bool used[SIZE];
int data[SIZE];
int n, m, i, j, k;
bool flag;
int main() {
	cin >> n >> m;
	memset(used, false, sizeof(used));
	for (i = 1; i <= m; i++) {
		data[i] = i;
		used[i] = true;
	}
	flag = true;
	while (flag) {


		for (i = 1; i <= m - 1; i++) cout << data[i] << " ";
		cout << data[m] << endl;
		flag = ___(1)___;
		for (i = m; i >= 1; i--) {
			___(2)___;
			for (j = data[i] + 1; j <= n; j++)
				if (!used[j]) {
					used[j] = true;
					data[i] = ___(3)___;
					flag = true;
					break;
				}
			if (flag) {
				for (k = i + 1; k <= m; k++)
					for (j = 1; j <= ___(4)___; j++)
						if (!used[j]) {
							data[k] = j;
							used[j] = true;
							break;
						}
				___(5)___;
			}
		}
	}
	return 0;
}


第1题 单选

(1) 处应填( )

A.

false

B.

true

C.

1

D.

-1

第2题 单选

.(2) 处应填( )

A.

used[i] = true

B.

data[i] =i

C.

used[data[i]] = true

D.

used[data[i]] = false

第3题 单选

(3) 处应填( )

A.

j

B.

i

C.

true

D.

false

第4题 单选

.(4) 处应填( )

A.

n

B.

m

C.

i

D.

j

第5题 单选

.(5) 处应填( )

A.

return 0

B.

exit

C.

continue

D.

break

发表评论

登录 后再回复