Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions Basic_Of_Algorithm/src/test/color.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package test;

public class color {

public static void main(String[] args) {

String[]temp = {"RRRBB",
"GGBBB",
"BBBRR",
"BBRRR",
"RRRRR"};

char[][]map = new char[temp.length][temp[0].length()];


for(int i=0;i<map.length;i++) {
for(int j=0;j<map[0].length;j++) {
map[i][j] = temp[i].charAt(j);
}
}

boolean[][]visited = new boolean[map.length][map[0].length];
boolean[][]visited2 = new boolean[map.length][map[0].length];

int normal = 0;

for(int i=0;i<map.length;i++) {
for(int j=0;j<map[0].length;j++) {
if(!visited[i][j]) {
dfs(i,j,map,visited);
normal++;
}
}
}


int disabled = 0;

for(int i=0;i<map.length;i++) {
for(int j=0;j<map[0].length;j++) {
if(map[i][j]=='G') map[i][j] = 'R';

}
}

for(int i=0;i<map.length;i++) {
for(int j=0;j<map[0].length;j++) {
if(!visited2[i][j]) {
dfs(i,j,map,visited2);
disabled++;
}
}
}

System.out.println(normal);
System.out.println(disabled);
}

static void dfs(int i,int j,char[][]map,boolean[][]visited) {

int[][]move = {{0,1},{1,0},{0,-1},{-1,0}};

visited[i][j] = true;


for(int d=0;d<4;d++) {

int newI = i + move[d][0];
int newJ = j + move[d][1];

if(newI<0||newJ<0||map.length-1<newI||map[0].length-1<newJ) continue;

if(!visited[newI][newJ] && map[newI][newJ]==map[i][j]) {
dfs(newI,newJ,map,visited);
}

}


}
}
57 changes: 57 additions & 0 deletions Basic_Of_Algorithm/src/test/dfs.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package test;

public class dfs {

static int answer = Integer.MAX_VALUE;

static String t;
static boolean[] visited;

public static void main(String[] args) {


String begin = "hit";
String target = "cog";
String [] words = {"hot", "dot", "dog", "lot", "log", "cog"};



t = target;

visited = new boolean[words.length];

dfs(begin,words,0);

System.out.println(answer);


}

static void dfs(String begin, String [] words , int count) {

if(begin.equals(t)) {
System.out.println(begin + " : " + count);
answer = Math.min(answer, count);
return;
}


for(int i=0;i<words.length;i++) {
int c = 0;
for(int j=0;j<begin.length();j++) {
if(words[i].charAt(j)!=begin.charAt(j)) {
c++;
}
}


if(!visited[i] && c==1) {
visited[i]= true;
begin = words[i];
dfs(begin,words,count+1);
visited[i] = false;
}
}

}
}
38 changes: 38 additions & 0 deletions Basic_Of_Algorithm/src/test/network.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package test;

import java.util.*;

public class network {

public static void main(String[] args) {

int n = 3;

int[][]computers = {{1,1,0},{1,1,0},{0,0,1}};

int answer = 0;

boolean[]visited = new boolean[computers.length];


for(int i=0;i<computers.length;i++) {
if(!visited[i]) {
answer++;
dfs(i,visited,computers);
}
}

System.out.println(answer);

}
static void dfs(int node,boolean[]visited,int[][]computers) {
visited[node] = true;

for(int i=0;i<computers.length;i++) {
if(!visited[i] && computers[node][i]==1) {
dfs(i,visited,computers);
}
}
}

}
39 changes: 39 additions & 0 deletions Basic_Of_Algorithm/src/test/network2.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package test;

import java.util.*;

public class network2 {

public static void main(String[] args) {

int n = 3;

int[][]computers = {{1,1,0},{1,1,0},{0,0,1}};

int answer = 0;

boolean[]visited = new boolean[computers.length];

for(int i=0;i<computers.length;i++) {
if(!visited[i]) {
dfs(i,visited,computers);
answer++;
}
}

System.out.println(answer);
}
static void dfs(int node,boolean[]visited,int[][]computers) {

visited[node] = true;

for(int i=0;i<computers.length;i++) {

if(!visited[i] && computers[node][i]==1) {
dfs(i,visited,computers);
}

}

}
}