|曦光| 2022-05-02 18:15 采纳率: 100%
浏览 35
已结题

自测-3 数组元素循环右移问题

一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,

如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:
每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。

输出格式:
在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:
6 2
1 2 3 4 5 6
输出样例:
5 6 1 2 3 4


#include<stdio.h>
int main()
{
    int a,b;
    int i,j;
    int c[999]= {0};
    int flag1=0,flag2=0;
    scanf("%d%d",&a,&b);
    for(i=1; i<=a; i++)
    {
        c[i]=i;

    }
    if(b==0)
    {
        printf("%d",c[1]);
        for(i=2;i<=a;i++)
        {
            printf(" %d",c[i]);
        }
    }
    if(b<=a&&b!=0)
    {

        for(j=a-b+1; j<=a; j++)
        {
            if(flag1==0)
                printf("%d",c[j]);
            else
                printf(" %d",c[j]);
            flag1++;
        }
        for(j=1; j<a-b+1; j++)
        {
            printf(" %d",c[j]);
        }
    }
    else

        if(b>a)
        {


            for(j=a-b%a+1; j<=a; j++)
            {
                if(flag1==0)
                    printf("%d",c[j]);
                else
                    printf(" %d",c[j]);
                flag1++;
            }
            for(j=1; j<a-b%a+1; j++)
            {
                printf(" %d",c[j]);
            }

        }


    return 0;
}

样例都通过,但提交显示错误0

  • 写回答

1条回答 默认 最新

  • A-Chin 2022-05-02 18:38
    关注

    是不是程序的太复杂了?
    可以试试:
    对于A[i],对应的B的索引为 B[(i + M) % N]

    #include <stdio.h>
    int main(){
        int N, M;
        scanf("%d%d", &N, &M);
        int A[N], B[N];
        int i;
        
        for (i = 0; i < N; ++i){
            scanf("%d", &A[i]); 
        }
        
        for (i = 0; i < N; ++i){
            B[(i + M) % N] = A[i]; 
        }
        
        for (i = 0; i < N - 1; ++i){
            printf("%d\t", B[i]); 
        }
        printf("%d", B[N - 1]); 
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月11日
  • 已采纳回答 5月3日
  • 创建了问题 5月2日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看