1. 程式人生 > >最優分解問題(Java版)

最優分解問題(Java版)

import java.util.*;
public class NiceDec {
	public static void main(String[] args) {
		
		Scanner in = new Scanner(System.in);
		int data = in.nextInt();
		int sum = 0;
		ArrayList<Integer> list = new ArrayList<Integer>();
		for (int i = 2; i <= data; i++) {
			sum += i;
			if (sum <= data)
				list.add(i);
			else { 
				sum -= i;
				break;
			}
		}
		for (int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i) + " ");
		}
		System.out.println(sum);
		int remainData = data - sum;
		int length = list.size();

		int count = remainData / length;
		int values = remainData % length;
		System.out.println(remainData + ":"+length+":"+count+ ":" + values);

		for (int i = 0; i < list.size(); i++) {
			list.set(i, list.get(i) + count);
		}
		
		int size = list.size();
		for (int i = size -1; i >= size-values; i--) {
			list.set(i, list.get(i) + 1);
		}
	
		for (int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i) + " ");
		}
	}
}

相關推薦

[藍橋杯][演算法提高VIP]和大子序列 Java

題目:對於一個給定的長度為N的整數序列A,它的“子序列”的定義是:A中非空的一段連續的元素(整數)。你要完成的任務是,在所有可能的子序列中,找到一個子序列,該子序列中所有元素的和是最大的(跟其他所有子序列相比)。程式要求你輸出這個最大值。 我們的校賽選了這道題,

LeetCode 3. 無重複字元的長子串Java

原題題解 方法一 窮舉所有的子串(定義兩個函式):       ①第一個函式窮舉所有可能出現的子串結果,對於字串的每一個字元,它所構成的子串是下標比它大的所有子串組合             eg:abc               對於a,子串有a, ab,ab

滑動視窗的大值java

【題目描述】給定一個數組和滑動視窗的大小,找出所有滑動窗口裡數值的最大值。例如,如果輸入陣列{2,3,4,2,6,2,5,1}及滑動視窗的大小3,那麼一共存在6個滑動視窗,他們的最大值分別為{4,4,6,6,6,5}; 針對陣列{2,3,4,2,6,2,5,1}

分解貪心演算法

#include<stdio.h> #include<stdlib.h> int main(){ int n,i,sum=0; int diff,result,j=0; scanf("%d",&n); int *arr = (int

分解問題Java

import java.util.*; public class NiceDec { public static void main(String[] args) { Scanner in

ccf歷年第四題java解答之-201412-4-灌溉100分

使用kruskal求解,耗時943ms,得分100 徘徊在超時的邊緣,同樣的程式碼,有時候提交是100分,有時候是超時90分,還有時候是超時80分== import java.util.ArrayList; import java.util.Collections; import jav

長上升子序列模板Java

hdu1257 d[i]就是儲存到i的最大上升子序列長度 g[i]儲存長度為i的最大上升子序列的的最小編號(因為編號越小越有機會有上升子序列的機會) import java.util.Scanner;

二分圖小點覆蓋集模板Java

import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main{

分解貪心

Description:設n是一個正整數。現要求將n分解為若干個自然數的和,且使這些自然數的乘積最大。對於給定的正整數n,程式設計計算最優分解方案。 Sample Input: 10 Sa

劍指Offer-題11Java:旋轉陣列的小數字

參考自:《劍指Offer——名企面試官精講典型程式設計題》 題目:旋轉陣列的最小數字 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入一個遞增排序的陣列的一個旋轉,輸出旋轉陣列

嚴格的身份證校驗Java

        上一篇部落格貼出了JavaScript版本的身份證校驗,本篇部落格將貼出Java版的身份證校驗:                 import java.util.Date;          /**          * 校驗身份證號碼是否有效      

大正向匹配java

之前在網上尋找中文分詞使用的一些方法,看過一篇帖子(http://blog.csdn.net/niuox/article/details/11248567)是利用python寫的關於最大正向匹配的例子。 寫的還不錯,適合新入門的小白來學習學習。 後來因為執行程式的時候資料量

劍指Offer-題48Java長不含重複字元的子字串

參考自:《劍指Offer——名企面試官精講典型程式設計題》 題目:最長不含重複字元的子字串 請從字串中找出一個最長的不包含重複字元的子字串,計算該最長子字串的長度。假設字串中只包含從’a’到’z’的

劍指Offer面試題15Java:鏈表中倒數第K個結點

head 計數器 easy sta 相同 ret white style 輸出 題目: 輸入一個鏈表。輸出該鏈表中倒數第k哥結點。 為了符合大多數人的習慣,本題從1開始計數。即鏈表的尾結點是倒數第1個結點。 比如一個鏈表有6個結點。從頭結點開始它們的值依次是1。2。

排序算法java

emp ive public while href ava 指針 循環 lec 1. 冒泡算法2. 快速排序3. 歸並排序4. 選擇排序5. 堆排序 排序算法 重要性不言而喻,很多算法問題往往選擇一個好的排序算法往往問題可以迎刃而解 1、冒泡算法

高速排序Java

content 輸入 println pop package ati 遞歸 子列 大於 package com.love.test; import java.util.Scanner; /** * @author huowolf *高速排序實現 *快排是十

劍指Offer面試題43Java:n個骰子的點數

pac pos max mod ins pri class pro bili 題目:把n個骰子仍在地上。全部骰子朝上一面的點數之和為s,輸入n,打印出s的全部可能的值出現的概率。 解法一:基於遞歸求骰子的點數,時間效率不夠高 如今我們考慮怎樣統計每個點數出現的次數。要向

傻瓜方法求集合的全部子集問題java

post 分解 ipp targe 找到 creat dojo class length 給定隨意長度的一個集合。用一個數組表示,如{"a", "b","c"},求它的全部子集。結果是{ {a},

小米2017秋招真題——電話號碼分身問題Java

imp spa ray 描述 mov lose port next can 原題描述如下: 通過對各個數字對應的英文單詞的分析,可以發現一些規律: 字母Z為0獨占,字母W為2獨占,字母U為4獨占,字母X為6獨占,字母G為8獨占; 在過濾一遍0、2、4、6、8後,字母O為1

jieba分詞/jieba-analysisjava

日本 word amp b- exception 鏈接 arp not unit 簡介 支持分詞模式Search模式,用於對用戶查詢詞分詞Index模式,用於對索引文檔分詞特性支持多種分詞模式全角統一轉成半角用戶詞典功能conf 目錄有整理的搜狗細胞詞庫因為性能原因,最新的