/*
* 給定整數序列a1,a2,...,an,判斷是否可以從中選出若干個數,使它們的和恰好為k
* 輸入:
* n=4
* a=
* k=13
* 輸出:
* yes(13=2+4+7)
*/public
class
_部分和
int k = sc.
nextint()
; kk = k;
dfs(a,k,0,
newarraylist
());
}public
static
void
dfs(
int[
] a,
int k,
int cur, arraylist
ints)
system.out.
println
(")");
system.
exit(0
);}if
(k <
0|| cur == a.length)
return
;//不要cur下標這個元素
dfs(a,k,cur+
1,ints)
;//要cur下標這個元素
ints.
add(a[cur]);
int index = ints.
size()
-1;dfs
(a,k-a[cur]
,cur+
1,ints)
; ints.
remove
(index)
;//回溯
}}
/*
* 在乙個x*y的網格中,乙個機械人只能走格點且只能向右或向下走,要從左上角走到右下角
* 計算機械人有多少種走法
* 給定兩個整數int x,int y,返回機械人的走法數目,保證x+y小於等於12
*/public
class
_機械人走方格
//利用遞迴解決
public
static
intsolve_1
(int i,
int j)
//不用遞迴
public
static
intsolve_2
(int i,
int j)
for(
int n =
0; n < i; n++
)for
(int m =
1; m < i ;m++)}
return arr[i-1]
[j-1];
}}
/*
* 問題:如果乙個字串包含兩個相鄰的重複子串,則稱它為容易的串,否則為困難的串
* 如,bb,abcdacabcab,abcdabcd是容易的串,d,dc,abdab,cbabcba都是困難的串
* * 輸入正整數n,l,輸出由前l個字元組成的,字典序第n小的困難的串
* 例如,當l=3時,前7個困難的串分別為:
* a,ab,aba,abac,abaca,abacab,abacaba
* n指定為4時,輸出abac
*/public
class
_困難的串
static
int count;
public
static
void
dfs(
int l,
int n, string prefix)}}
/* * 判斷prefix是否是乙個困難的串
* 1、遍歷所有長度為偶數的子串,看是否對稱
* 2、prefix是乙個困難的串
*/public
static
boolean
ishard
(string prefix,
char i)
return
true;}
}
/*
* 如下圖所示,玩家需要根據9*9盤面上的一直數字,推理出所剩餘空格的數字,並滿足每一行、每一列、每乙個同色九宮格內的數字均含1-9不重複
* 數獨的答案是唯一的,所以,多個解也稱為無解
* 輸入:
* 005300000
* 800000020
* 070010500
* 400005300
* 010070006
* 003200080
* 060500009
* 004000030
* 000009700
* 輸出:
* 145327698
* 839654127
* 672918543
* 496185372
* 218473956
* 753296481
* 984761235
* 521839764
*/public
class
_數獨遊戲
dfs(table,0,
0);}
public
static
void
dfs(
char
table,
int x,
int y)
if(table[x]
[y]==
'0')
} table[x]
[y]=
'0';
//回溯
}else
}public
static
boolean
check
(char
table,
int x,
int y,
int k)
//檢查小宮格
for(
int l =
(x/3)*
3;l<
(x/3+1
)*3;l++)}
return
true;}
public
static
void
print
(char
table)
}}
/*
* 輸入正整數n,對1-n進行排序,使得相鄰兩個數之和均為素數
* 輸出時從整數1開始,逆時針排序,同乙個環恰好輸出一次
* 輸入:6
* 輸出:
* 1 4 3 2 5 6
* 1 6 5 2 3 4
*/public
class
_素數環
public
static
void
dfs(
int n,
int[
] r,
int cur)
for(
int i =
2; i <= n; i++)}
}public
static
boolean
check
(int
r,int i,
int cur)
return
true;}
public
static
boolean
isp(
int k)
return
true;}
public
static
void
print
(int
r)system.out.
println()
;}}
/*
* 假設我們有8種不同面值的硬幣,用這些硬幣組合構成乙個給定的數值n
* 共有多少種組合方式
* 【華為面試題】1分2分5分的硬幣有三種,組合成1角,共有多少種組合
* 【創新工廠筆試】有1分2分5分10分四種硬幣,每種硬幣數量無限,給定n分錢,有多少種組合可以組成n分錢
*/public
class
_硬幣表示
*///假設有1元5元10元25元,要湊成100元
system.out.
println
(countways
(100))
;}public
static
intcountways
(int n),3
);}public
static
intcountwayscore
(int n,
int[
] coins,
int cur)
return res;
}}
函式相關練習題
1,寫函式,接收乙個引數 此引數型別必須是可迭代物件 將可迭代物件的每個元素以 相連線,形成新的字串,並返回.例如 傳入的可迭代物件為 1,天王 劉德華 返回的結果為 1 天王 劉德華 1 def func lst l1 for i in lst return join l1 print func ...
list相關實踐練習題
1.逗號 假定有下面這樣的列表 版本1def linklist spam spam 1 and spam 1 for i in spam 1 print i,end print spam 1 linklist spam 版本2 針對版本1中的linklist spam 函式,當使用linklist ...
函式相關的練習題
1 實現乙個函式,列印乘法口訣表,口訣表的行數和列數自己指定。例如 輸入9,輸出99口訣表,輸入12,輸出1212的乘法口訣表。define crt secure no warnings include include void multi int n putchar n int main 2 使用...