约瑟夫问题,自己模拟写的直接超时了,后面才知道约瑟夫问题是有规律的。
题目链接:约瑟夫问题
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int k=scanner.nextInt(); System.out.println(find(n,k)); } public static int find(int n,int k){ int r=0; for(int i=2;i<=n;i++){ r=(r+k)%i; } return r+1; } }
自己写的超时!
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int k=scanner.nextInt(); int now=0;//当前指针 ArrayList<Integer> a=new ArrayList<>(); for(int i=1;i<=n;i++){ a.add(i); } int i=0;//当前位置 while(a.size()!=1){ now++; if(now==k){ Integer x=a.remove(i);//索引处 now=0; } else{ i++; if(i==a.size()){ i=0; } } } System.out.println(a.get(0)); } }
约瑟夫问题---(蓝桥杯)
最新推荐文章于 2024-08-26 23:57:38 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)