zoukankan      html  css  js  c++  java
  • geeksforgeeks-Array-Rotate and delete

    As usual Babul is again back with his problem and now with numbers. He thought of an array of numbers in which he does two types of operation that is rotation and deletion. His process of doing these 2 operations are that he first rotates the array in a clockwise direction then delete the last element. In short he rotates the array nth times and then deletes the nth last element. If the nth last element does not exists then he deletes the first element present in the array. So your task is to find out which is the last element that he deletes from the array so that the array becomes empty after removing it.

    For example
    A = {1,2,3,4,5,6}.

    He rotates the array clockwise i.e. after rotation the array A = {6,1,2,3,4,5} and delete the last element that is {5} so A = {6,1,2,3,4}. Again he rotates the array for the second time and deletes the second last element that is {2} so A = {4,6,1,3}, doing these steps when he reaches 4th time, 4th last element does not exists so he deletes 1st element ie {1} so A={3,6}. So continuing this procedure the last element in A is {3}, so o/p will be 3.

    Input:
    The first line of input contains an integer T denoting the no of test cases. Then T test cases follow. Each test case contains two lines. The first line of each test case contains an integer N. Then in the next line are N space separated values of the array A.

    Output:
    For each test case in a new line print the required result.

    Constraints:
    1<=T<=200
    1<=N<=100
    1<=A[i]<=10^7

    Example:
    Input
    2
    4
    1 2 3 4
    6
    1 2 3 4 5 6

    Output:
    2
    3

    C++(gcc5.4)代码:

        #include <iostream>
        using namespace std;
    
        int main() {
        	//code
            // define the number of test cases
            int T;
            cin>>T;
        	
            for(int t=0; t<T; t++)
        	{
                //get the two line input
        	    int N;
                cin>>N;
        	    int a[N];
                int i = 0;  
                for(i=0;i<N;i++)
                    cin>>a[i];
        
                //Rotate and delete
                int index_delete = 1;
                int array_length = N;
                int tmp;
                while(array_length>1)  
                {
                    //Rotate
                    tmp = a[array_length - 1];
                    for(int j=array_length-1; j>0; j--)
                    {
                        a[j] = a[j-1];
                    }
                    a[0] = tmp;
                    
                    //delete
                    for(int k=array_length<index_delete?0:array_length-index_delete; k<array_length-1; k++)
                    {
                        a[k]=a[k+1];
                    }    
                    
                    index_delete += 1;
                    array_length -= 1; 
                }
                cout<<a[0]<<endl;
        	}
            return 0;
        }
    

    注:更加严谨的将一行数字存入数组的代码如下,但是在测试时包含这部分代码的程序会提示超出时间限制!

    ·#include
    using namespace std;
    int main()
    {
    int a[50];
    int i = 0;
    char c;
    while((c=getchar())!=' ')
    {
    if(c!=' ')//把这句判断条件改动
    {
    ungetc(c,stdin);
    cin>>a[i++];
    }
    }
    for(int j=0;j<i;j++)
    {
    cout<<"a["<<j<<"]:"<<a[j]<<endl;
    }

    include

    using namespace std;

    int main()
    {
    int a[20];
    int i = 0;
    char c;
    cin>>a[i++];
    while((c=getchar())!=' ')
    {
    cin>>a[i++];
    }
    for(int j=0;j<i;j++)
    {
    cout<<"a["<<j<<"]:"<<a[j]<<endl;
    }
    }

    python代码

  • 相关阅读:
    r语言 包说明
    python中的map()函数
    Java打印整数的二进制表示(代码与解析)
    python 两个字典合并
    判断一个字符串中是否含有中文字符:
    Python字符串的encode与decode研究心得——解决乱码问题
    javac编译成功,用java运行class文件出现“找不到或无法加载主类” 的问题
    python读取剪贴板报错 pywintypes.error: (1418, 'GetClipboardData', 'xcfxdfxb3xccxc3xbbxd3xd0xb4xf2xbfxaaxb5x
    python openpyxl 2.5.4 版本 excel常用操作封装
    pycharm 设置文件编码的位置:Editor-->File Encodings
  • 原文地址:https://www.cnblogs.com/alanma/p/7360215.html
Copyright © 2011-2022 走看看