輸入一個正數 n,輸出所有和為 n 連續正數序列。 java實現


用了半小時才寫出來啊,

其實這種思路應用范圍很廣,利用有序性這個特點,比如本體只要是有序就行,例如兩個集合是有序的,求交集,有序數組的查找,有序數組的歸並,有序有了優化的可能。

輸入一個正數 n,輸出所有和為 n 連續正數序列
        例如輸入 15,由於 1+2+3+4+5=4+5+6=7+8=15,所以輸出 3 個連續序列 1-5、4-6 和 7-8。
        分析:我們用兩個數small和big分別表示序列的最小值和最大值。首先把small初始化為 1,big初始化為 2。如果從small到big的序列的和大於n的話,我們向右移動small,相當於從序列中去掉較小的數字。如果從small到big的序列的和小於n的話,我們向右移動big,相當於向序列中添加big的下一個數字。一直到small等於(1+n)/2,因為序列至少要有兩個數字。

package 連續和為n;

import java.util.ArrayList;

public class Main {
    //輸出一到n中連續和為n的正整數
    public static  void getAns(int n)
    {
       int beg=1;
       int sum=1;
       int cur=1;
         
        while(beg<=n/2+1)
        {
            
            if(sum==n)
            {
                for(int k=beg;k<=cur;k++)
                {
                    System.out.print(k+" ");
                }
                System.out.println();
                sum=sum-beg;
                beg++;
                cur++;
                sum+=cur;
                
            }
             if(sum>n)
            {
                
               sum=sum-beg;
               beg++;
                
            }
             else
             {
             cur++;
             sum+=cur;
             }
            // System.out.println("beg"+beg+"cur"+cur+"sum"+sum);
            
            
        }
        
        
        
    }

    public static void main(String[] args) {
        getAns(15);
        

    }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 輸入一個N*M的矩陣,實現轉置並輸出 Java輸出double類型中的最小正數和最大正數 劍指Offer(Java版)第五十六題:在一個長度為n的數組里的所有數字都在0到n-1的范圍內。 數組中某些數字是重復的,但不知道有幾個數字是重復的。 也不知道每個數字重復幾次。請找出數組中任意一個重復的數字。 例如,如果輸入長度為7的數組{2,3,1,0,2,5,3},那么對應的輸出是第一個重復的數字2。 【C語言】請輸入一個n(n<=10)並輸出一個n行n列的楊輝三角 編寫一個將輸入復制到輸出的程序,並將其中連續的多個空格用一個空格代替。 劍指offer(Java版)第一題:在一個長度為n的數組里的所有數字都在0到n-1的范圍內。 數組中某些數字是重復的,但不知道有幾個數字重復了,也不知道每個數字重復了幾次。 *請找出數組中任意一個重復的數字。 *例如,如果輸入長度為7的數組{2, 3, 1, 0, 2, 5, 3},那么對應的輸出是重復的數字2或者3。 P1567 統計天數 統計天數 題目描述 炎熱的夏日,KC非常的不爽。他寧可忍受北極的寒冷,也不願忍受廈門的夏天。最近,他開始研究天氣的變化。他希望用研究的結果預測未來的天氣。 經歷千辛萬苦,他收集了連續N(1<=N<=10^7)天的最高氣溫數據。 現在,他想知道最高氣溫一直上升的最長連續天數。 輸入輸出格式 輸入格式: *1行:一個整數N。1<=N<=10^7 *2行:N個空格隔開的整 一個棧的輸入序列為1,2,3,4,5,則下列序列中不可能是棧的輸出序列的是() 1、對輸入的n個數排序並輸出結果 Python基礎課:定義一個函數,輸入一個序列,判斷序列是順序還是逆序,順序輸出UP,逆序輸出DOWN,否則輸出None
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM