weinan030416

导航

排列问题

有n个人排成一队散步,第二天每个人都不想和前一天前面的人相同,多少种排列

n!-(n-1)(n-1)!+(n-2)(n-2)!-...1*1

模拟n=3

#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;

int main()
{
    for(int i=1;i<=3;i++)
    for(int j=1;j<=3;j++)
    for(int k=1;k<=3;k++)
    {
        if(i==j||i==k||j==k||i==j-1||j==k-1)    continue;
        else
        cout<<i<<" "<<j<<" "<<k<<endl;
    }
    
    return 0;
}

组合数

#include<bits/stdc++.h>
using namespace std;

int calc(int n,int m)
{
    if(m==1)
    return n;
    if(n==0)
    return 0;
    return calc(n-1,m-1)+calc(n-1,m);
}

//从n个物品里面取走m个 
int main()
{
    int n,m;
    cin>>n>>m;
    cout<<calc(n,m);
    return 0;
}

 

posted on 2023-02-13 12:16  楠030416  阅读(24)  评论(0编辑  收藏  举报