注册 登录
编程论坛 数据结构与算法

一道算法问题,请教

widon1104 发布于 2010-03-20 23:10, 596 次点击
题目很简单就是把字符串的一部分调换位置,比如字符串有n个元素,把p到n-1的字符串,调换到字符串前。
比如字符串:n=10,a[]={1,2,3,4,5,6,7,8,9,10};
p=4的化,转换后a[]={5,6,7,8,9,10,1,2,3,4};
难点就是只能用题目设定好的变量,用最小的空间
void f(int *a,int p,int n)
{
    int i,j,t;
....
}
int main(void)
{
    int a[]={1,2,3,4,5,6,7,8,9,10};
    f(a,4,10);
    for(i=0;i<10;i++){
        printf("%d ",a[i]);
    }
    return 0;
}
3 回复
#2
cnfarer2010-03-22 08:21
#include <stdio.h>
void f(int *a,int p,int n)
{
    int i,j,t;
    for (i=0;i<p;i++)
    {
        t=*a;
        for (j=0;j<n-1;j++)
        {
            *(a+j)=*(a+j+1);
        }
        *(a+n-1)=t;
    }
}
int main(void)
{
    int a[]={1,2,3,4,5,6,7,8,9,10};
    f(a,4,10);
    for(int i=0;i<10;i++){
        printf("%d ",a[i]);
    }
    return 0;
}


[ 本帖最后由 cnfarer 于 2010-3-22 15:20 编辑 ]
#3
wangjianhui2010-03-22 15:26
  for (i=0;i<p;i++)
      {    t=*a;
           for (j=0;j<n-1;j++)
           {
             *(a+j)=*(a+j+1);
           }
            *(a+n-1)=t;
      }
   
#4
shaojie5192010-03-22 19:03
是这样,c语言for语句不能再里面定义int 的i吧,小语法错误
1