導航:首頁 > 源碼編譯 > java數據結構和演算法源碼

java數據結構和演算法源碼

發布時間:2023-01-17 00:36:41

『壹』 關於java和數據結構的問題

編程語言大同小異,基本的邏輯操作都是一樣的。比如與或,if,while這些。
但是java是面向對象,c是面向程序。我先學的c,後學的java,怎麼都轉不過來。現在習慣用java了,又不會用c了。
其實吧,沒必要學c。如果你java學的好,那麼一般的函數調用,參數傳遞和邏輯語句都應該會了吧。這樣接觸一門新的語言就不是啥難事了。編程重要的是思想,
個人覺得初學編程的時候最難的就是邏輯操作。還有參數和函數的調用。這些都會了之後,不用專門學某種編程,都觸類旁通了(匯編除外)。
我學了c之後自學java,現在用的最好的是java,然後可以重構別人的asp,c#,不會寫但是都可以看懂了,看多了就會寫了

『貳』 java數據結構和演算法

首先看存儲方式, 這個list, 只保存一個link的引用, 作為鏈表的頭, 然後通過這個頭.next, 得到第二個, 第二個.next得到第三個, 一次類推, 知道.next == null 的時候, 說明list結束.

那麼現在分兩種情況看:
1. 當當前鏈表裡面沒有元素的時候, 那麼就添加一個, 然後讓它的next = first, 也就是為null, 那麼鏈表在遍歷的時候, 訪問了第一個, 然後第一個.next == null, 鏈表就到頭了.

2.當當前鏈表裡面有元素的時候, 那麼因為方法叫做firstinsert, 也就是添加頭元素, 所以先聲明一個link = newlink, 然後讓newlink, 的next 指向之前list.first素, 那麼現在newlink就變成了第一個, 而之前那個變成了第二個, 然後再把newlink的引用賦給first, 這樣, 鏈表的頭就變成了newlink, 達到了first insert的目的.

first的引用就是我上面分析的兩種情況, 一種是沒有元素就是null, 另一種情況是有, 變成了第二個, 因為這個list要有結束的位置, 否則就無限長了, 結束的條件就是遍歷list的時候, 最後一個元素.next == null, 這樣list就停住了我大體畫個圖吧, 你看看:

第一種情況: 當隊列中沒有元素的時候
列表中什麼都沒有 : [ (head)null ]
有一個newlink {nl}
執行完newlink.next=first; {nl} -> null
執行完first=newlink; [ (head){nl} -> null ];
這樣list的頭就是newlist, 只有它一個元素.

第二中情況: 當隊列中有元素的時候:
假設當前頭元素為{oldhead}
[ (head){oldhead} -> {obj1} -> {obj2} ... {objn} -> null]
有一個newlink {nl}
執行完newlink.next=first; {nl} -> {oldhead}
執行完first=newlink; [ (head){nl} -> {oldhead} -> {obj1} -> {obj2} ... {objn} -> null]
這樣list的頭就是newlist, 而oldhead就變成了第二個元素, 後面的元素以此類推.

『叄』 我需要一本數據結構的演算法JAVA代碼實現的書。

java數據結構和演算法中文版(pdf)附源碼
http://58.251.57.206/down1?cid=&t=2&fmt=&usrinput=數據結構和演算法java&dt=2002000&ps=0_0&rt=0kbs&plt=0

迅雷試了下能下:http://www.winu.cn/attachment.php?aid=92883

『肆』 求程序代碼(java版的數據結構)

3個class,運行UI.java。
******
public class CircuitException extends Exception {public CircuitException(){}}
*****
import java.util.LinkedList;
public class GPS {
public static final int MAX = 65535;
public GPS(int maxSize){
graph = new Graph(maxSize);
}
public GPS(){
graph = new Graph();
}
public Graph graph;
public static void main(String args[]){
GPS gps = new GPS();
try {
gps.graph.addEdge("a", "b", 1);
gps.graph.addEdge("a", "c", 1);
gps.graph.addEdge("b","d" , 1);
gps.graph.addEdge("c","d" , 1);
gps.graph.addEdge("d","e" , 1);
gps.graph.addEdge("d","f" , 1);
gps.graph.addEdge("e","t" , 2);
gps.graph.addEdge("f","t" , 1);
LinkedList list = gps.graph.getPath("a", "d");
for(int i = 0 ; i < list.size() ; i++){
System.out.print(list.get(i));

}System.out.println();
} catch (CircuitException e) {
System.out.println("出現了自環!");
}
gps.graph.showGraph();
System.out.println(gps.graph.gap);
}
public class Graph{
public int Zuida = 50;
public int chang = 0;
public Jiao[] vertex;
public double gap;
public Graph(){
vertex = new Jiao[Zuida];
}
public Graph(int maxSize){
this.Zuida = maxSize;
vertex = new Jiao[maxSize];
}
public void addVertex(String name){
vertex[chang++] = new Jiao(name);
}
public void addEdge(String v1, String v2,double edge) throws CircuitException{
//先找到v1;
if(v1.equals(v2))
throw new CircuitException();
Jiao from = null;
Jiao to = null;
for(int i = 0 ; i < chang ; i++){
if(vertex[i].name.equals(v1)){
from = vertex[i];
}else if(vertex[i].name.equals(v2)){
to = vertex[i];
}
}
if(from == null){
this.addVertex(v1);
from = this.vertex[chang-1];
}
if(to == null){
this.addVertex(v2);
to = this.vertex[chang-1];
}//已經找到v1和v2;
//沒有檢測是否v1 v2邊已經存在!
//加入邊。
Jiao v1adj = new Jiao(v2);
v1adj.edge = edge;
Jiao v2adj = new Jiao(v1);
v2adj.edge = edge;
//添加聯系
//檢查聯系是否已經存在
Jiao temp = from;
while(temp.next!=null){
Jiao temppar = temp;
temp = temp.next;
if(temp.name.equals(v1adj.name)){
temppar.next = temp.next;
}
}
v1adj.next = from.next;
from.next = v1adj;
//v2adj.next = to.next;
//to.next = v2adj;
}
//假設要找的必然存在,不用想是否不在
public LinkedList getPath(String v1 ,String v2){
int count = 0;
//System.out.println(count++);
boolean found[] = new boolean[chang];
double distance[] = new double[chang];
int to = 0;
Jiao from = null;
for(int i = 0 ; i < chang ; i++){
found[i] = false;
distance[i] = MAX;
}
for(int i = 0 ; i < chang ; i++){
if(vertex[i].name.equals(v1)){//找到始發地
from = vertex[i];
distance[i] = 0;
found[i] = true;
//System.out.println(count++);
}
if(vertex[i].name.equals(v2)){//找到目的地
to = i;
//System.out.println(count++);
}
}
//必須先准備好路徑!
Jiao forCount = from;
int degree = 0;
while(forCount!=null){
degree++;
forCount=forCount.next;
}
LinkedList[] list = new LinkedList[degree];
int [] mark = new int[degree];
for(int i = 0 ; i < degree ; i++){
list[i]=new LinkedList();
mark[i]=MAX;
}
int test=0;
int count2 = 0;
int count3 = 0;
//System.out.println(count+++"xx");
while(!found[to]&&test++<100){
//System.out.println(count+++"FIRST");

//開始時from到所有都是最大值。
//找到標記了的節點
//找標記了的節點鄰接的未標記的節點。
//得到最短的邊,並標記。
//更新現有路徑
double min = MAX;
int address = -1;
int father = -1;
for(int i = 0 ; i < chang ; i++){//對於已經找到的頂點尋找最小的往後的距離。
if(found[i]){//找到了的。
Jiao temp = vertex[i];
while(temp!=null){//vertex的鄰接頂點~~

//先看temp的號碼~
int tempNumber = -1;
for(int j = 0 ; j < chang ; j++){
if(vertex[j].name.equals(temp.name)){
tempNumber = j;
break;
}
}
if(!found[tempNumber]){//如果是還沒有找到的~
double dist = distance[i]+temp.edge;
if(dist < min){
min = dist;
father = i;
//System.out.println(" "+min);
address = tempNumber;
}
}
temp = temp.next;
}

}

}found[address] = true;
distance[address] = min;
//添加到已有路徑中去!
//知道father
for(int i = 0 ; i < degree ; i++){
if(list[i].isEmpty()||list[i].getLast().equals(vertex[father].name)){
list[i].addLast(vertex[address].name);
break;
}
}
}
for(int i = 0 ; i < degree ; i++){
if(list[i].isEmpty())
continue;
else{
if(list[i].getLast().equals(v2)){
gap=0;
//先求出gap
Jiao pre = from;
Jiao nex = null;
for(int j = 0 ; j < list[i].size() ; j++){
for(int k = 0 ; k < chang ; k++){
if(vertex[k].name.equals(list[i].get(j))){
nex = vertex[k];break;
}
}

while(pre.next!=null){//找到下一個的長度
pre = pre.next;
//System.out.println(nex.name +"nex.name");
if(pre.name.equals(nex.name)){
gap+=pre.edge;
//System.out.println(" gap2 "+gap);
}
}
pre = nex;
}
//System.out.println(gap+"gap");
return list[i];
}
}
}
return null;
}
public void showGraph(){
Jiao temp;
for(int i = 0 ; i < chang ; i++){
temp = vertex[i];
while(temp!=null){
System.out.print(temp.name+temp.edge+" ");
temp = temp.next;
}System.out.println();
}System.out.println("Show Over!");
}
}

public class Jiao{
public String name;
public Jiao next = null;
public double edge;
public Jiao(String name){
this.name = name;
}
}
}
******
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import javax.swing.JButton;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class UI extends JFrame implements ActionListener{

private JTextField textField_5;
private JTextField textField_4;
private JList list_1;
private JList list;
private JTextField textField_1;
private JTextField textField_3;
private JTextField textField_2;
private JTextField textField;
private DefaultListModel model = new DefaultListModel();
private DefaultListModel model_1 = new DefaultListModel();
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UI frame = new UI();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame
*/
public UI() {
super();
setTitle("GPS尋路");
getContentPane().setLayout(null);
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

final JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(11, 36, 221, 193);
getContentPane().add(scrollPane);

list = new JList(model);
scrollPane.setViewportView(list);

final JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setBounds(253, 36, 218, 193);
getContentPane().add(scrollPane_1);

list_1 = new JList(model_1);
scrollPane_1.setViewportView(list_1);

final JLabel label = new JLabel();
label.setText("從");
label.setBounds(10, 249, 24, 18);
getContentPane().add(label);

final JLabel label_1 = new JLabel();
label_1.setText("到");
label_1.setBounds(11, 273, 24, 18);
getContentPane().add(label_1);

textField = new JTextField();
textField.setBounds(50, 247, 103, 22);
getContentPane().add(textField);

textField_2 = new JTextField();
textField_2.setBounds(50, 271, 103, 22);
getContentPane().add(textField_2);

final JLabel label_2 = new JLabel();
label_2.setText("距離");
label_2.setBounds(11, 297, 37, 18);
getContentPane().add(label_2);

textField_3 = new JTextField();
textField_3.setBounds(50, 295, 103, 22);
getContentPane().add(textField_3);

final JButton button = new JButton();
button.setText("添加");
button.setBounds(155, 250, 73, 28);
getContentPane().add(button);

final JButton button_1 = new JButton();
button_1.setText("刪除");
button_1.setBounds(155, 285, 73, 28);
getContentPane().add(button_1);

final JLabel label_3 = new JLabel();
label_3.setText("距離:");
label_3.setBounds(253, 297, 39, 18);
getContentPane().add(label_3);

textField_1 = new JTextField();
textField_1.setBounds(293, 295, 86, 22);
getContentPane().add(textField_1);

final JButton button_2 = new JButton();
button_2.setText("顯示路徑");
button_2.setBounds(385, 249, 86, 68);
getContentPane().add(button_2);

final JLabel label_4 = new JLabel();
label_4.setText("路徑表示");
label_4.setBounds(11, 10, 66, 18);
getContentPane().add(label_4);

final JLabel label_5 = new JLabel();
label_5.setText("最佳路徑");
label_5.setBounds(253, 12, 66, 18);
getContentPane().add(label_5);
//
button.addActionListener(this);
button_1.addActionListener(this);
button_2.addActionListener(this);

final JLabel label_6 = new JLabel();
label_6.setText("從");
label_6.setBounds(253, 249, 24, 18);
getContentPane().add(label_6);

textField_4 = new JTextField();
textField_4.setBounds(293, 247, 86, 22);
getContentPane().add(textField_4);

final JLabel label_7 = new JLabel();
label_7.setText("到");
label_7.setBounds(253, 273, 24, 18);
getContentPane().add(label_7);

textField_5 = new JTextField();
textField_5.setBounds(293, 271, 86, 22);
getContentPane().add(textField_5);

final JSeparator separator = new JSeparator();
separator.setOrientation(SwingConstants.VERTICAL);
separator.setBounds(239, 10, 8, 317);
getContentPane().add(separator);
}

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand().equals("添加")){

try{String from = textField.getText();
String to = textField_2.getText();
if(from.equals(to)){
JOptionPane.showMessageDialog(null, "始點與終點不能相同");
return;
}
if(from.equals("")||to.equals("")){
JOptionPane.showMessageDialog(null, "添加不能為空");
return;
}for(int i = 0 ; i < model.size() ; i ++){
if(model.get(i).toString().substring(0, model.get(i).toString().indexOf(":")).equals(
from+"->"+to))
model.remove(i);
}
double length = Double.parseDouble(textField_3.getText());
model.addElement(from+"->"+to+": "+length);

}catch(Exception e1){
JOptionPane.showMessageDialog(null, "距離為數字值");
}
}
if(e.getActionCommand().equals("刪除")){
for(int i = 0 ; i < model.size() ; i++){
if(list.isSelectedIndex(i))
model.remove(i);
}
}
if(e.getActionCommand().equals("顯示路徑")){
try{
model_1.removeAllElements();
GPS gps = new GPS();
String full,from,to;
double length;
for(int i = 0 ; i < model.size() ; i++){
full = model.get(i).toString();
from = full.substring(0,full.indexOf("-"));
to = full.substring(full.indexOf("-")+2,full.lastIndexOf(":"));
length = Double.parseDouble(full.substring(full.indexOf(":")+1, full.length()-1));
//System.out.println(from);
//System.out.println(to);
try {
gps.graph.addEdge(from, to, length);
System.out.println(from +" "+ to);
} catch (CircuitException e1) {
System.out.println("有環存在");
}
}LinkedList list = gps.graph.getPath(textField_4.getText(), textField_5.getText());
model_1.addElement(textField_4.getText());
for(int i = 0 ; i < list.size() ; i++){
model_1.addElement(list.get(i));
}//計算路徑長度
textField_1.setText(""+gps.graph.gap);
}catch(Exception e1){
JOptionPane.showMessageDialog(null, "沒有找到有關節點");
}
}
}
}

『伍』 初學java什麼書好

Java小白自學書籍推薦:
1、《Head First Java, 2nd Edition(中文版)》
這本書不僅內容豐富、有趣且通俗易懂,並且涵蓋了所有 Java 相關的基礎知識。如果你是 Java 初學者,這本書正適合你。
2、《Java 核心技術(卷1、2)》
寫作風格相比 Head First 趣味性來說更顯傳統,所涵蓋的內容包括 Java 基礎知識及高級應用,是對於入門來說的另一種選擇。
3、《Java 編程思想(第4版)》
必讀之作,不僅涵蓋所有 Java 基礎,對於編程思想層面的提升也有很好的幫助。
4、《Head First 設計模式》
延續 Head First 一貫生動趣味的寫作風格,介紹 23 個設計模式,推薦作為設計模式入門級書。
5、《Effective Java 中文版(第2版)》
Java 編程中78條極具實用價值的經驗規則,這些經驗規則涵蓋了大多數開發人員每天所面臨的問題的解決方案。
6、《重構:改善既有代碼的設計》
出自於 Martin Fowler 的大作,寫出優秀代碼的必經之路。
7、《Java 虛擬機規范(Java SE 7版)》
作者是 Java 編程語言的主要貢獻者之一。如果你想系統、全面、深入的學習 JVM,絕對不能錯過這本書。

『陸』 Java 常用數據結構

線性表,鏈表,哈希表是常用的數據結構,在進行Java開發時,JDK已經為我們提供了一系列相應的類來實現基本的數據結構。這些類均在java.util包中。

Collection

├List

│├LinkedList

│├ArrayList

│└Vector

│ └Stack

└Set

Map

├Hashtable

├HashMap

└WeakHashMap

『柒』 java(樹的內容)演算法與數據結構

其實有兩種方式:
第一種就是遞歸 就像現在比較老的樹形菜單。這種方式應該string類型應該是存不了的。就是自定義一個類型A 裡面有一個成員變數 list<A>。 這種結構就是list裡面嵌套list,你有多少級就有多少層。
第二種其實要做處理,就是把原數據按一定規則排序放到一個list裡面,這裡面不會再嵌套list。list排完序就如你的效果圖一樣。第一個 一級節點 》》其子節點;然後第二個一級節點》》其子節點,etc。 但是這種結構要有存的時候要循環一遍排成上述的順序,取的時候還需要判斷哪個是下一個不同級節點的開始。

js前台展示比較簡單,根據父id直接添加就行了,原數據什麼都不用做。但是java里這種方式不行。

『捌』 用Java實現一個地鐵票價計算程序,希望給出主要演算法與數據結構

根據某市地鐵線路圖寫一個地鐵票價計算程序

需求描述:

1.計費規則:最低2元,超過5站以上每站加收0.5元,換乘重新起算,例如L1先坐4站,換乘L2再坐6站,結果就是2+2.5=5.5元

2.程序啟動以後讀取輸入文件(in.txt),內容格式如:

L2-8,L2-2

X3,L3-8

....

每行表示一次行程,起點站和終點站之間用逗號分隔,行數不限

4.系統按最短路徑方案(盡量少換乘且站數少,假設乘 客換乘一次用的時間相當於坐4個站)規劃路線,計算票價,並把路線和票價輸出到文件(out.txt),內容格式如:

L2-8,L2-2=2.5:L2-8,L2-7,L2-6,L2-5,L2-4,L2-3,L2-2

X3,L3-8=4:X3,X4,L3-8

....

等號後面的表示票價和路徑

地鐵線路圖如下:共有5條線路,X開頭的站點表示 換乘車站

『玖』 JAVA數據結構與演算法

給你寫了答案如下,有問題再追問。

  1. B

  2. A

  3. C

  4. 確切性

  5. 3

  6. infexOf

  7. 隊頭指針指向隊尾

  8. 順序表:查找方便,但插入困難;

    鏈表:查找困難,但插入方便。

  9. //最大值
    publicstaticintgetMax(intn,int[]arr){//n是數組最後一個元素的index
    if(n==0)
    returnarr[0];
    if(arr[n]>getMax(n-1,arr))
    returnarr[n];
    returngetMax(n-1,arr);
    }
    //平均值
    publicstaticintgetAverage(intn,int[]arr){//n是數組最後一個元素的index
    if(n==1)
    returnarr[0];
    return(arr[n]+getAverage(n-1,arr)*(n-1))/n;
    }
  10. //刪除節點
    publicstaticNodermNode(Nodehead,Nodenode){
    Nodetemp=head;
    while(temp.next!=null){
    if(temp.next==node){
    temp.next=node.next;
    break;
    }
    else
    temp=temp.next;
    }
    returnhead;
    }
    //數組元素逆置
    publicstaticint[]inverseArray(int[]arr){
    intstart=0;
    intend=arr.length-1;

    for(;start<arr.length/2;start++,end--){
    inttemp=arr[start];
    arr[start]=arr[end];
    arr[end]=temp;
    }
    returnarr;

『拾』 什麼是java語言,本人什麼都不懂,學它應該先學什麼

Java是一門編程語言,是一門連接人與計算機的語言,在我們的生活中,人與人之間需要交流,通常我們可以使用說話來進行交流,讓別人理解我們所要表達的意思,但是當我們和一個外國人進行交流的時候,由於兩個人的語言不通,所以交流的時候誰也不懂對方的意思,這時我們可以找個會兩種語言的翻譯幫助我們,從而可以使雙方交流下去。

由於計算機只認識二進制(只有0和1)的信息,對於我們來說,只有二進制的信息與我們平時所說的話比較起來就太難懂了,所以為了能夠很好的和機器交流,於是就產生了各種各樣的計算機高級語言,其中就包括Java;

Java之所以可以讓計算機識別,是因為Java的編譯器和Java虛擬機,它們會將我們按照一定規范寫成的信息翻譯成機器所能識別二進制的信息,這樣就可以使我們很好地和計算機進行交流了,而這種規范我們稱之為Java語言;

java是一種面向對象的語言,所謂的面向對象指的是Java編程中,所有的操作都是以對象進行操作的,這樣在我們編程的時候,我們可以將某個東西當成一個類,可以給這類東西設置自己的屬性,例如我們可以創建一個小鳥的類,它有自己的名字,顏色等屬性,當我們需要一隻小鳥的時候,我們可以自己創建一隻小鳥,這只小鳥在Java中就是一個對象,我們可以從這只小鳥中獲取它是什麼小鳥,顏色等信息,這樣在開發的時候,能夠很方便的定義我們所需要的類,創建他們的對象。

由於計算機高級語言種類很多(C/C++,JAVA,Python,C#等等),不同的語言所側重的領域不相同,Java所側重的范圍是我們使用較多的互聯網的行業,像我們現在的購物平台,一些公司的管理平台等大部分都是使用Java來開發的,而且我們現在所使用的安卓手機的APP也都是基於Java來開發的。

近些年來,Java在編程語言排行榜上基本上一直位列前三,而且Java的使用人數也很多,Java的需求量也很大,主要原因也是在於Java的語法簡單,上手比較快,而且Java是開源的,很多的人開發出很多開源的Java框架,開源的意義就是我們所有人都可以看到他們的源碼,看到他們是如何寫的,所以這個對於我們學習和開發都很方便。

看完上面的內容,Java是什麼你懂了嗎?

Java到底學什麼?

2020年最新的Java學習路線圖整理分享給大家!

學習是一個枯燥且無聊的過程,希望我整理的資料能夠幫助大家!

共同走向年薪百萬;

Java編程語言佔比:

據官方數據統計,在全球編程語言工程師的數量上,Java編程語言以1000萬的程序員數量位居首位。 而且很多軟體的開發都離不開Java編程,因此其程序員的數量最多。而在以Java編程為核心的開發領域中,企業級程序員的需求量10年來一直居於首位!

目前各個大廠的的招聘,Java也是穩居首位!

那麼系統的學習Java線路圖,展示分享給大家:

一、JavaSE基礎階段

面向對象編程(基礎)

面向對象編程(進階)

異常機制

Java常用類

數據結構和演算法

集合(容器)

IO流

多線程

網路編程

集合提升訓練

多線程提升訓練



有想學習Java的同學,我這邊整理了一篇關於Java系統學習的全套資料:

網頁鏈接

希望會給你帶來幫助!



閱讀全文

與java數據結構和演算法源碼相關的資料

熱點內容
雲伺服器華為雲 瀏覽:12
linux如何操作伺服器環境搭建 瀏覽:814
六度人脈pdf 瀏覽:958
pdf是英文的 瀏覽:475
java數據爬蟲 瀏覽:357
word做成pdf格式 瀏覽:678
批處理編程教程 瀏覽:579
哈希演算法源碼阿里雲 瀏覽:706
vue編譯xcode 瀏覽:495
pdftodjvu 瀏覽:151
jxl讀取exceljava 瀏覽:485
本科學歷學計算機編程 瀏覽:189
電腦中沒有解壓文件如何設置 瀏覽:171
安卓手機如何打開以圖搜圖 瀏覽:192
反編譯後不能搜索位置 瀏覽:482
離心式壓縮機最小轉速 瀏覽:957
什麼叫程序員加班賣命 瀏覽:273
共享文件夾加密碼怎麼加 瀏覽:23
一個程序員可以加班嗎 瀏覽:134
鄰近梯度演算法 瀏覽:572