算法不給了,又是這種組合,排列的問(wèn)題。無(wú)聊
成都創(chuàng)新互聯(lián)公司專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、做網(wǎng)站、靖遠(yuǎn)網(wǎng)絡(luò)推廣、小程序制作、靖遠(yuǎn)網(wǎng)絡(luò)營(yíng)銷(xiāo)、靖遠(yuǎn)企業(yè)策劃、靖遠(yuǎn)品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪(fǎng)、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供靖遠(yuǎn)建站搭建服務(wù),24小時(shí)服務(wù)熱線(xiàn):18982081108,官方網(wǎng)址:www.cdcxhl.com
不過(guò)我換種方式解釋一下樓主的意思:
有三個(gè)數(shù)字
1 (代表空串"")
2 (代表長(zhǎng)度不為0的字符串"******")
3 (代表null引用)
要求在這三個(gè)數(shù)字選出N個(gè)出來(lái)組合 這種組合在數(shù)學(xué)上叫可重復(fù)組合 比如:
輸入N=2時(shí)有組合
11
22
33
12
13
23
輸出N=4時(shí)有組合
1111
2222
3333
1112
1113
。。。省略
對(duì)于N=4時(shí),樓主的外層list就是所有的這些組合,內(nèi)層list代表每種組合的具體內(nèi)容
按上面N=4的例子,list.get(0)就是1111,list.get(0).get(0)就是1111這個(gè)組合的第一個(gè)1
不知道樓主要干嘛,本來(lái)求排列組合的算法就是非P算法了,還要嵌套list!有必要么?
我輸個(gè)N=100,估計(jì)樓主等得不崩潰,你的電腦都崩潰了=。=如何可以,建議換個(gè)位運(yùn)算算法代替吧
尤其提示:可重復(fù)元素組合比不可重復(fù)元素組合的數(shù)量要多非常多
java邏輯代碼塊是指使用{}大括號(hào)內(nèi)的代碼片段,為了實(shí)現(xiàn)某種邏輯和主類(lèi)區(qū)分開(kāi)來(lái)的一段代碼。分為靜態(tài)代碼塊、普通代碼塊,示例如下:
/**
*?靜態(tài)代碼塊先于構(gòu)造器執(zhí)行?普通塊先于構(gòu)造塊??只執(zhí)行一次
*?凡是靜態(tài)的與對(duì)象無(wú)關(guān),先于對(duì)象存在的;?凡是靜態(tài)的都是共享的
*
*/
public?class?Test?{
static?{//靜態(tài)代碼塊
System.out.println("static");
}
{
System.out.println("普通塊2");
}
public?Test()?{
System.out.println("構(gòu)造器");
}
代碼:
package com.ufotable.test;
public class Test30 {
private static int l,r,u,d;//定義上下左右邊界
private static int[][] a=new int[0][0];//數(shù)組
private static int y=0,x=0;//初始化坐標(biāo)
private static int step,temp;//步長(zhǎng),上一個(gè)數(shù)組的值
private static void add(int y,int x){
temp+=step;a[y][x]=temp;
}
private static void left(){
while(xl)add(y, --x);//未遇到左邊界
if(yu){//遇到左邊界且未遇到上邊界
l++;up();
}
}
private static void right(){
while(xr)add(y, ++x);//未遇到右邊界
if(yd){//遇到右邊界且未遇到下邊界
r--;
down();
}
}
private static void up(){
while(yu)add(--y, x);//未遇到上邊界
if(xr){//遇到上邊界且未遇到右邊界
u++;
right();
}
}
private static void down(){
while(yd)add(++y, x);//未遇到下邊界
if(xl){//遇到下邊界且未遇到左邊界
d--;
left();
}
}
private static void fun(int start,int step,int length){//產(chǎn)生數(shù)組(起始值,步長(zhǎng),矩陣邊長(zhǎng))
Test30.step=step;
l=u=0;r=d=length-1;
a=new int[length][length];
a[0][0]=temp=start;
up();
}
public static void print(){//輸出矩陣
for(int i=0;ia.length;i++){
for(int j=0;ja.length;j++){
System.out.print(a[i][j]+"\t");
}System.out.println();}
}
public static void main(String[] args) {
fun(0,1,10);//測(cè)試
print();
}
}
輸出結(jié)果:
先不要看具體的框架里面的方法。先熟悉流程,搞清楚最基本的操作的方法,然后熟悉增刪改查,很固定的方法,會(huì)調(diào)用就可以了,不需要了解多少框架里面封裝好的方法?;镜膉ava會(huì)寫(xiě)吧,建個(gè)聯(lián)系的頁(yè)面自己寫(xiě)點(diǎn)東西,不寫(xiě)只看總是感覺(jué)不太會(huì)