排列&组合

排列:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e3 +5;
#define swap(a,b){int temp = a ; a = b ; b = temp;}
int data[maxn];
void so(){
    for(int i = 0 ; i <= maxn ; i++){
        data[i]=i+1;
    }
}
void perm(int begin , int end,int &num){
    if(begin == end){
        for(int i = 0 ; i <= end ; i++){
            cout<<data[i]<<" ";
        }
        num++;
        cout<<endl;
    }
    else
        for(int i = begin ; i <=end ; i++){
            swap(data[begin],data[i]);
            perm(begin + 1 , end,num);
            swap(data[begin],data[i]);
        }
}
int main(){
    so();
    int n;
    cin>>n;
    int num = 0;
    perm(0,n-1,num);
    cout<<num;
    return 0;
}

组合:

#include<bits/stdc++.h>
using namespace std;
const int maxn =1e5 +5;
int data[maxn];
int flag = 1;
int ans[maxn];
int cnt=0;
int n , m ;
int j = 1;
void f(int n,int m,int flag,int &sum){
 if(flag == m+1){
  for(int i = 0 ; i <= n ; i++){
   if(ans[i]!=0){
    cout<<ans[i]<<" ";
   }
  }
  sum++;
  cout<<endl;
 }
 else{
 for(int i = j; i <= n ; i++){
  if(data[i]!=0){
   ans[i]=i;
   j = i;
   data[i]=0;
   f(n,m,flag+1,sum);
   ans[i]=0;
   data[i]=i;
  }
 }
 }
}
void so(){
 for(int i = 0 ; i <= n ; i++)
  data[i]=i;
}
int main()
{
int sum=0;
 cin>>n>>m;
 so();
 f(n,m,flag,sum);
 cout<<sum;
 return 0;
}

 

posted @   ganl啦  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示