序列最小操作次數的Java實現
阿新 • • 發佈:2018-12-23
問題的描述:
有一個長度為N的序列。一開始,這個序列是1, 2, 3,... n - 1, n的一個排列。
對這個序列,可以進行如下的操作:
每次選擇序列中k個連續的數字,然後用這k個數字中最小的數字替換這k個數字中的每個數字。
我們希望進行了若干次操作後,序列中的每個數字都相等。請你找出需要操作的最少次數。
這個問題,我們可以發現。我們首先操作最前面的數,然後第一個數作為下一次操作的最小數,以此類推,程式碼如下:
package Exer; import java.util.Scanner; public class minSeri { public static void main(String[] args) { //獲得N,k Scanner ss1=new Scanner(System.in); int N=ss1.nextInt(); Scanner ss2=new Scanner(System.in); int k=ss2.nextInt(); System.out.println(D(N,k)); } //宣告次數count變數 static int count=0; //構造計數方法 public static int D(int ss,int tt) { while (true) { if (ss>tt) { ss=ss-tt+1; count++; }else { count++; break; } } return count; } }
可以手動嘗試算一下簡單的數字進行驗證,結果正確。