• 注册
  • C++ 编程讨论 C++ 编程讨论 关注:5 内容:10

    简单的全排列

  • 查看作者
  • 打赏作者
    • 最近在刷深宽搜/DP问题,顺带把以前没搞懂的题(全排列等)轻松AC了,总结一个快速全排列的方法
      这个方法主要用到STL的string,30ms,内存3774kb

      思路:每一次遍历设vis,一旦可以直接钻进去(顺便加上string)

      AC代码:

      #include <iostream>
      using namespace std;
      #define rep(i,a,n) for (int i=a;i<n;i++)
      int16_t n;
      string nowV;
      bool vis[10];
      void dfs(int step) {
      	if (step > n) {
      		cout << nowV << '\n';
      		return;
      	}
      	rep(i, 1, n + 1) {
      		if (!vis[i]) {
      			nowV.push_back(i +'0');
      			vis[i] = true;
      			dfs(step + 1);
      			vis[i] = false;
      			nowV.pop_back();
      		}
      	}
      }
      int main() {
      	ios::sync_with_stdio(false); cout.tie(nullptr);
      	cin >> n;
      	dfs(1);
      }

      L55
      童年客服
      打赏了20童年币

      其实我没有离线!有事请留言,一般在两三小时内回复!

      回复

      请登录之后再进行评论

      登录
    • 任务
    • AI聊天
    • 客服
    • 偏好
    • 到底部
    • 帖子间隔 侧栏位置: