数组换位问题

原创 2007年10月08日 23:35:00
// change.cpp : implementation file
//题目:数组换位问题
//作者:任嫱
//日期:2007.10.8

/*设a[0:n-1]是一个有n个元素的数组,k(0<=k<=n-1)是一个非负整数。
试设计一个算法将子数组a[0:k]与a[k+1:n-1]换位。要求算法在最坏情况下所用的时间为O(n),
且只用到O(1)的辅助空间*/

#include "iostream.h"
void hw(int *a,int l,int r,int k)
{
 int t;
 if(2*k<=r+l-1)
 {
  for(int i=k;i>=l;i--)
  {
   t=a[i];a[i]=a[r+i-k];a[r-k+i]=t;
  }
  if(2*k==r+l-1)return;
  else
   hw(a,l,r-k-1+l,k);
 }
 else
 {
  for(int i=k+1;i<=r;i++)
  {
   t=a[i];a[i]=a[l-k-1+i];a[l-k-1+i]=t;
  }
 if(2*k==r+l-1)return;
 else
  hw(a,r-k+l,r,k);
 }
}
void main()
{
 int n,k;
 cin>>n>>k;
 int *a=new int[n];
 for(int i=0;i<n;i++)
 a[i]=i+1;
 if(n>k+1)hw(a,0,n-1,k);
 for(int j=0;j<n;j++)
 cout<<a[j]<<"/t";
 cout<<endl;
}


//l是低位的下标
//r是高位的下标
//k是要求换位的下标位置

 

经典算法 之 子数组换位问题

子数组换位问题 设a[0:n-1]是一个有n个元素的数组,k(0
  • heming6666
  • heming6666
  • 2017年03月12日 15:57
  • 818

2016蓝桥杯C/C++省赛 卡片换位(深搜DFS)

题目: 思路: 这题麻烦的一点在于处理输入和标记状态,以空格为点走,如果下一步是A点那么就让A走一格和空格换位,对于B点同理。注意在搜索的时候注意返回条件和判断是否越界 代码: #in...
  • riba2534
  • riba2534
  • 2017年03月25日 17:18
  • 1003

【C】使用指针对数组中的元素换位问题

首先一条比较简单的问题: 输入10个整数,将其中最小的数字与第一个数字对换,把最大的数与最后一个数对换。 编写3个函数:(1)输入10个数字(2)进行处理(3)输出10个数字 思想如下图,使用一个长度...
  • yongh701
  • yongh701
  • 2015年08月06日 20:27
  • 1282

【分治法】子数组换位问题

Description         设a[0:n-1]是有n个元素的数组, k(0         ...
  • u010932314
  • u010932314
  • 2014年04月27日 16:56
  • 535

<算法书>子数组换位问题

设a[0:n-1]是一个有n个元素的数组,k(0(来自《计算机算法设计与分析》- 王晓东 - 第三章 - 递归与分治策略 - 课后习题 )   初步思考:最简单的方法就是循环(n-k-1)...
  • Aiphis
  • Aiphis
  • 2015年07月28日 08:50
  • 299

蓝桥 卡片换位(bfs)

你玩过华容道的游戏吗? 这是个类似的,但更简单的游戏。 看下面 3 x 2 的格子 +---+---+---+ | A | * | * | +---+---+---+ | ...
  • qq_36238595
  • qq_36238595
  • 2017年04月01日 19:57
  • 370

java数组排序,查找与置换

一、排序 排序:将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。 排序也是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。...
  • qqhao01
  • qqhao01
  • 2013年09月19日 18:32
  • 1677

css3幻灯片换位效果

CSS3技术实现的幻灯片效果,图片换位效果,点击某一张幻灯图片,这张图片就会换位,动画效果,测试时候注意,不要使用IE8。本效果兼容以下浏览器:火狐、Chrome、Safari等。...
  • life66881
  • life66881
  • 2015年06月29日 13:21
  • 630

算法导论——最大子数组问题

方法一: 暴力求解 #include #include #include int maxsubset(int *a,int len){ int summax=INT_MIN; ...
  • a0100034930
  • a0100034930
  • 2015年01月04日 20:28
  • 498

一维数组解决01背包问题

01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为C1,C2,…,Cn,与之相对应的价值为W1,W2,…,Wn.求解将那些物品装入背包可使总价值最大。 设置一个数组,V[1...
  • amanicspater
  • amanicspater
  • 2015年11月19日 22:25
  • 814
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数组换位问题
举报原因:
原因补充:

(最多只允许输入30个字)