如果不用do while该如何实现呢
时间: 2024-03-11 20:51:39 浏览: 8
如果不使用`do-while`循环,可以使用一个`while`循环和一个`bool`变量来实现。具体实现如下:
```
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int* arr = new int[n];
for(int i = 0; i < n; i++)
cin >> arr[i];
sort(arr, arr + n);
bool flag = true;
while(flag)
{
for(int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
flag = next_permutation(arr, arr + n);
}
delete[] arr;
return 0;
}
```
该程序与之前的程序类似,只是使用了一个`while`循环和一个`bool`变量`flag`来代替了`do-while`循环。程序首先对输入的元素进行排序,然后使用`while`循环来进行输出排列的操作,循环中使用`next_permutation`函数生成下一个排列,如果当前排列为最后一个排列,则`next_permutation`函数返回false,将`flag`设置为false,while循环终止,程序结束。
需要注意的是,使用`while`循环和`bool`变量的方式会在最后一个排列输出后再次进行一次`next_permutation`函数调用,这个调用会返回false,将`flag`设置为false,从而结束循环。而使用`do-while`循环则可以保证最后一个排列不会重复输出。