本文主要是介绍有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0-1-,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
输入描述:
每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。
输出描述:
一行输出最后一个被删掉的数的原始下标位置。
这道题使用ArrayList能够很轻松的解决,每隔两个数删除,就是删除顺序表中i=i+2的数,又由于循环所以要%顺序表的长度。 然后利用顺序表的特性,达到目的
import java.util.*;
public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);while(sc.hasNext()){int n = sc.nextInt();if (n > 1000) {n = 999;}List<Integer> list=new ArrayList<>();int i=0;for( i=0;i<n;i++){list.add(i);}while(list.size()>1){i=(i+2)%list.size();list.remove(i);}System.out.println(list.get(0));}
}
}
这篇关于有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0-1-的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!