当前位置: 首页 > 知识库问答 >
问题:

尝试使用堆栈按时钟方向旋转阵列时出错

纪翰
2023-03-14

给定一个大小为N的未排序数组arr[],将其旋转D元素(顺时针)。

输入输入的第一行包含T,表示测试用例的数量。每个测试用例的第一行包含两个空格分隔的元素,N表示数组的大小,整数D表示旋转的数字大小。后续行将是N个空格分隔的数组元素

对于每个测试用例,在新行中输出旋转的数组

示例输入1 2 3 4 5

输出3 4 5 1 2

#include <iostream>
#include <stack>
using namespace std;
void rotate(int *a,int s,int r) {
    stack<int> st;
    for(int i=0;i<r;i++) {
        st.push(a[i]);
    }
    for(int j=r;j<s;j++) {
        a[j-r] = a[j];
    }
    for(int k=s-1;k>r+1;k--) {
        a[k] = st.top();
        st.pop();
    }
    for(int l=0;l<s;l++) {
        cout<<a[l]<<" ";
    }
}
int main() {
    //code
    int T;
    cin>>T;
    while(T--) {
        int N,r;
        cin>>N>>r;
        int A[N];
        for(int i=0;i<N;i++) {
            cin>>A[i];
        }
        rotate(A,N,r);
        cout<<endl;
    }
    return 0;
}

共有2个答案

许丁雷
2023-03-14

抱歉,我的错误,int第三个循环在旋转函数中应该有k

王凌
2023-03-14

我遵循了你的逻辑,看来你的回填部分有问题。

    for(int k=s-1;k>=s-r;k--) { // change k>r+1 to k>=s-r
        a[k] = st.top();
        st.pop();
    }
 类似资料:
  • 我读了一些关于如何优化正则表达式的文章,但是没有一个答案(更少的组,使用{X,Y}而不是*)似乎阻止了我的正则表达式获得堆栈溢出错误。 我正在尝试通过文件进行动态搜索。假设我正在一个相当大(2-4MB)的文件中搜索“我打赌你找不到我”。我的正则表达式生成器将生成正则表达式: 这个正则表达式的想法是,无论单词之间有什么字符或空格,它都能找到准确的短语。然而,当我尝试使用: 我遇到堆栈溢出错误。我知道

  • 我基于Maged M.Michael和Michael L.Scott的《简单、快速、实用的非阻塞和阻塞并发队列算法》中指定的算法实现了一个无锁队列(有关算法,请跳到第4页) 我在上使用了原子操作,如等。 当只在一个线程中使用队列时,一切都很好,但是当从不同的线程中使用它时,我会得到堆栈溢出异常。 不幸的是,我无法追查问题的根源。似乎当一个<code>shared_ptr</code>超出范围时,它

  • 我正在尝试使用java。util。Eclipse中Java项目中的ArrayList。它在这个IDE上解决起来很有趣,与我在NetBeans上的习惯相反。例如: 在NetBeans上,我可以简单地创建一个通用数组列表,如下所示: 但是,在Eclipse上,如果要成功声明和初始化ArrayList,结构如下: 我被迫做一个类型转换,而泛化只能在右侧完成。 然而,这还不算太糟糕,直到我尝试调用一些Ar

  • 问题内容: 我想使用rxjava Observable处理翻新中的分页。我听了另一个问题的建议。 我有100多个页面需要获取,但是链在第20页左右失败,并且在logcat中使用以下日志停止了对可观察对象的任何进一步订阅 有人知道为什么会发生这种情况吗? 更新: 我知道这是由于递归而发生的,但是有没有更优雅的方式来处理带有翻新和rxjava的分页? 问题答案: 因此,鉴于我回答了您引用的原始问题,我

  • ...在Xcode控制台,我得到 它演示了建立了连接并成功找到了服务器,但其他问题出现了。会很感激你的帮助。

  • 对于minecraft服务器,我尝试使用标准的512MB以上的RAM运行服务器。这曾经对我起作用,但当我最近再次安装服务器时,它停止了工作。我使用以下命令行运行服务器: 但当我运行此脚本时,我得到以下错误: Picked初始化VM时出错,指定的最小和最大堆大小不兼容 操作系统:Windows 7 64bit Java:java7u45(64bit) RAM:8g 如果有人有解决方案,那就太棒了:)