题解 CF482A 【Diverse Permutation】

看题解之前,希望大家先自己列张表,会发现规律哦~

用递归

#include<bits/stdc++.h>//万能头文件
using namespace std;
int a[100005];//保存答案,当然你也可以直接输出(假如你能做到的话)
int hhh(int N,int K)
{
	if(N-K>=2)
	{
		a[N]=N;
		hhh(N-1,K);
	}
    /* 例如n=4 k=3时,数列可以是:1 4 2 3
         而n=5 k=3时         是:1 4 2 3 5
     */
	else
	{
		a[1]=1;
		for(int i=2;i<=N;i++)
		{
			if(i%2==0)
				a[i]=a[i-1]+K;//别看我,看⬇
			else
				a[i]=a[i-1]-K;//别看我,看⬇
			K--;
		}
        /* 比如n=2 k=1时:1 2
                 3   2时:1 3 2
                 4   3时:1 4 2 3
                 5   4时:1 5 2 4 3
        */
	}
	return 0;
}
int main()
{
	int n,k;
	cin>>n>>k;//读入
	hhh(n,k);//看⬆啦
	for(int i=1;i<=n;i++)
		cout<<a[i]<<" ";
	cout<<endl;//输出
	return 0;	
}

其实只要列张表就懂了,是不是后悔看题解了呢~

qaqaq
原文地址:https://www.cnblogs.com/zdsrs060330/p/13095031.html