渣渣渣变渣渣系列(1)

    xiaoxiao2021-03-25  6

    一、题目描述:(408联考 2010真题)

     

     

     

     

     

    二、算法思想:

     

    可以将这个问题看作是把数组ab转换为ba(a代表数组的前p个元素,b代表数组中的余下n-p个元素),先将a逆置得到a-1b,再将b逆置得到a-1b-1,最后将整个a-1b-1逆置为(a-1b-1)-1=ba。

    三、核心代码:

     

    void Reverse(int R[],int from,int to) { int temp; int i; for(i=0;i<(to-from+1)/2;i++) { temp=R[from+i]; R[from+i]=R[to-i]; R[to-i]=temp; } } void Converse(int R[],int n,int p) { Reverse(R,0,p-1); Reverse(R,p,n-1); Reverse(R,0,n-1); }

     

     

     

     

     

    四、完整代码:

     

    #include<stdio.h> void Reverse(int R[],int from,int to); void Converse(int R[],int n,int p); void Print(int R[],int n); int main() { int R[10]={0,1,2,3,4,5,6,7,8,9}; int n; int p; n=sizeof(R)/sizeof(int); printf("please input the value of p:"); scanf("%d",&p); Converse(R,n,p); Print(R,n); return 0; } void Reverse(int R[],int from,int to) { int temp; int i; for(i=0;i<(to-from+1)/2;i++) { temp=R[from+i]; R[from+i]=R[to-i]; R[to-i]=temp; } } void Converse(int R[],int n,int p) { Reverse(R,0,p-1); Reverse(R,p,n-1); Reverse(R,0,n-1); } void Print(int R[],int n) { int i; for(i=0;i<n;i++) printf("%d",R[i]); }

     

     

     

     

     

    五、测试结果:

    转载请注明原文地址: https://ju.6miu.com/read-200340.html

    最新回复(0)