【链接】
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=2070
【原题】
A permutation ofn+1is a bijective function of the initialn+1natural numbers: 0, 1, ...n. A permutationpis called antiarithmetic if there is no subsequence of it
forming an arithmetic progression of length bigger than 2, i.e. there are no three indices 0≤i<j<k<nsuch that (pi,pj,pk) forms an arithmetic progression.
For example, the sequence (2, 0, 1, 4, 3) is an antiarithmetic permutation of 5. The sequence (0, 5, 4, 3, 1, 2) is not an antiarithmetic permutation of 6 as its first, fifth and sixth term (0, 1, 2) form
an arithmetic progression; and so do its second, fourth and fifth term (5, 3, 1).
Your task is to generate an antiarithmetic permutation ofn.
Each line of the input file contains a natural number 3≤n≤10000. The last line of input contains 0 marking the end of input. For eachnfrom input, produce one line of output containing
an (any will do) antiarithmetic permutation ofnin the format shown below.
Sample input
3
5
6
0
Output for sample input
3: 0 2 1
5: 2 0 1 4 3
6: 2 4 3 5 0 1
【题目大意】
输入N, 然后要由0,1,...N-1组成一个antiarithmetic序列, 这个序列不能有3个元素的等差子序列。
【分析与总结】
这题想了很久还是没思路。于是百度学习之。原来是运用了分治的办法,这一直是我比较弱的地方。
【代码】
/*
* UVa: 11129 - An antiarithmetic permutation
* 递归与分治
* Time: 0.012s
* Author: D_Double
*/
#include<cstdio>
int init[10003],tar[10003],T=10000;
void ST(int l,int h)
{
int t=l;
if(l==h) return;
for(int i=l;i<=h;i+=2)
tar[t++]=init[i];
for(int i=l+1;i<=h;i+=2)
tar[t++]=init[i];
for(int i=l;i<=h;i++)
init[i]=tar[i];
ST(l,(l+h)/2);
ST((l+h)/2+1,h);
}
int main()
{
while(~scanf("%d",&T)&T){
for(int i=0;i<T;i++)
init[i]=i;
ST(0,T-1);
printf("%d: %d",T,tar[0]);
for(int i=1;i<T;i++)
printf(" %d",tar[i]);
printf("\n");
}
return 0;
}
—— 生命的意义,在于赋予它意义。
分享到:
相关推荐
js js_leetcode题解之31-next-permutation.js
cd permutation-task && npm install cd permutation-studio && npm install cd permutation-task && npm run-script build cd permutation-studio && npm run-script build 用build build-qa代替build来进行开发。...
"Destiny-2-armour-permutation-optimiser" 是一个专为《命运2》设计的工具,旨在帮助玩家更高效地管理与优化他们的装甲组合。 这个工具的主要功能是实现装甲的灵活分类和优化。它可能包括以下方面: 1. **属性...
参考: Bonnini、Stefano & Salmaso、Luigi & Solari、Aldo。 通过学生辍学分析评估大学有效性的多变量排列测试。 统计与应用,卷。 3, 2005, 37-44。 Rosa Arboretti Giancristofaro和Stefano Bonnini。...
Android 锁屏排列可视化工具一个简单的项目,旨在生成和显示所有可能的 Android 锁屏排列。 我相信它来自关于制作一个可以自动...节点之间允许的连接被编码为邻接列表。 绘图都是用画布完成的。截图慢的中等的快速地
matlab滑动条码快速置换熵 从滑动窗口中的一维时间序列有效地计算置换熵的值 函数outdata = PE(indata,delay,order,windowSize) 对于滑动窗口中一维时间序列的有序模式的阶数= 1 ... 8,可以有效地计算[1]排列...
js js_leetcode题解之60-permutation-sequence.js
c语言入门 c语言_leetcode题解之0567_permutation_in_string
java java_leetcode题解之Permutation Sequence.java
java java_leetcode题解之Permutation in String.java
代码
### hutc-Permutation with Repetition参考代码 #### 知识点概述 本文将详细介绍一个C++程序,该程序用于生成给定字符数组的所有排列(允许重复元素),并统计这些排列的数量。此代码适用于理解如何通过递归方法...
全排列-基于递归实现
Cryptanalysis and Improvement of Chaos-Based Image Encryption Scheme with Circular Inter-Intra-Pixels Bit-Level Permutation
由于Permutation test检验计算量大而限制了其应用和推广,以致不为人熟知。现在由于计算机技术飞速发展,Permutation test又重新进入我们的视野。Permutation test有独特的优势,其对原始数据分布没有要求,特别适用...
在Column permutation cipher中,加密过程通常涉及以下步骤: 1. **排列**: 首先,将明文按照一定的模式(例如,固定列数)排列成矩阵形式。比如,若选择4列,那么每4个字符组成一列。 2. **置换**: 接着,对这些...
java java_leetcode题解之Palindrome Permutation.java
java java_leetcode题解之Next Permutation.java