首页 > 代码库 > 【数学】环逆序
【数学】环逆序
/***** 1->N个人坐成一个环,顺时针序号递增。 现要这些人坐成逆时针递增的环。相邻交换,最少需要交换多少次。
思考:设共6个人,要逆时针递增坐,则可以转化成两个子问题: 1到3人变逆序,4到6人变逆序……然后就把有环的问题转化成的直线数组问题。
这题最重要的思想是去环!******/
#include<bits/stdc++.h>using namespace std;int f[40000];int main(){ f[0]=0;f[1]=0;f[2]=1;f[3]=3; for(int i=4;i<40000;i++) f[i]=f[i-1]+i-1; int Y;cin>>Y; while(Y--) { int n;cin>>n; cout<<f[n/2]+f[n-n/2]<<endl; }}
太SB了,客户端居然没有代码编辑的功能。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。