我試圖編寫一個解決方案來解決與Java中的數組相關的問題。問題是這樣的:使用陣列解決Java任務
您正在給定長度Ñ的陣列,從0索引到Ñ - 1.該數組的每個元素是0或1只能移動到索引其中包含0.首先你在0 第位置。在每一步你可以做以下事情之一:
- 向前或向後走一步。
- 跳過正確長度m轉發。
這意味着你可以從位置x移動到X + 1,X - 在一個移動1或X米。新位置必須包含0.也可以移動到大於n-1的任何位置。
你不能從位置0向後移動。如果你移動到任何大於n-1的位置,你就贏了比賽。
鑑於數組和跳躍的長度,您需要確定是否有可能贏得比賽。
這裏是例子測試用例:
6 5 0 0 0 1 1 1 YES 6 3 0 0 1 1 1 0 NO
我的代碼:
import java.io.*;
import java.util.*;
public class hcrkarryjump {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int a[]=new int[n];
for(int k=0;k<n;k++)
a[k]=sc.nextInt();
int i=0;
while(i<n){
if(a[i]==0)
i++;
if(a[i]==1){
if(a[i+1]==0 &&(i+m>=n-1))
System.out.println("YES");
else
System.out.println("NO");
}
}
}
}
的代碼進入一個無限循環,並請糾正我,如果有任何錯誤。
歡迎來到StackOverflow。請閱讀我們的[問]頁面提示如何改善您的問題。 偉大的問題傾向於從社區提供更快,更好的答案 – ochi
@ochi:我認爲這個問題很好,問題是有一個無限循環。看到無限循環發生的地方也很清楚。 – Makoto
_「這意味着你可以從一個位置移動到另一個位置」 - 爲什麼你忽略了關鍵信息?定位到什麼「一舉」? –