Naloga 5
This commit is contained in:
parent
c220ccf97c
commit
3655eaab86
29
naloga5/.gitignore
vendored
Normal file
29
naloga5/.gitignore
vendored
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
### IntelliJ IDEA ###
|
||||||
|
out/
|
||||||
|
!**/src/main/**/out/
|
||||||
|
!**/src/test/**/out/
|
||||||
|
|
||||||
|
### Eclipse ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
.sts4-cache
|
||||||
|
bin/
|
||||||
|
!**/src/main/**/bin/
|
||||||
|
!**/src/test/**/bin/
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
/nbproject/private/
|
||||||
|
/nbbuild/
|
||||||
|
/dist/
|
||||||
|
/nbdist/
|
||||||
|
/.nb-gradle/
|
||||||
|
|
||||||
|
### VS Code ###
|
||||||
|
.vscode/
|
||||||
|
|
||||||
|
### Mac OS ###
|
||||||
|
.DS_Store
|
10
naloga5/.idea/.gitignore
generated
vendored
Normal file
10
naloga5/.idea/.gitignore
generated
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
|
# Environment-dependent path to Maven home directory
|
||||||
|
/mavenHomeManager.xml
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
19
naloga5/.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
19
naloga5/.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="PyPep8Inspection" enabled="true" level="INFORMATION" enabled_by_default="true">
|
||||||
|
<option name="ignoredErrors">
|
||||||
|
<list>
|
||||||
|
<option value="W292" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</inspection_tool>
|
||||||
|
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
||||||
|
<option name="ignoredIdentifiers">
|
||||||
|
<list>
|
||||||
|
<option value="tests.smoke.test_absences_sliding.TestAbsencesSliding.*" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</inspection_tool>
|
||||||
|
</profile>
|
||||||
|
</component>
|
6
naloga5/.idea/misc.xml
generated
Normal file
6
naloga5/.idea/misc.xml
generated
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_24" default="true" project-jdk-name="homebrew-23" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
8
naloga5/.idea/modules.xml
generated
Normal file
8
naloga5/.idea/modules.xml
generated
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/naloga5.iml" filepath="$PROJECT_DIR$/naloga5.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
11
naloga5/naloga5.iml
Normal file
11
naloga5/naloga5.iml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="JAVA_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
58
naloga5/src/Naloga5.java
Normal file
58
naloga5/src/Naloga5.java
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class Naloga5 {
|
||||||
|
static String[][] getEditDistanceAlignments(String s1, String s2) {
|
||||||
|
int m = s1.length();
|
||||||
|
int n = s2.length();
|
||||||
|
int[][] dp = new int[m + 1][n + 1];
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i <= m; i++) dp[i][0] = i;
|
||||||
|
for (int j = 0; j <= n; j++) dp[0][j] = j;
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 1; i <= m; i++) {
|
||||||
|
for (int j = 1; j <= n; j++) {
|
||||||
|
if (s1.charAt(i - 1) == s2.charAt(j - 1)) {
|
||||||
|
dp[i][j] = dp[i - 1][j - 1];
|
||||||
|
} else {
|
||||||
|
dp[i][j] = 1 + Math.min(dp[i - 1][j - 1], Math.min(dp[i - 1][j], dp[i][j - 1]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<String[]> result = new ArrayList<>();
|
||||||
|
backtrack(s1, s2, m, n, "", "", dp, result);
|
||||||
|
|
||||||
|
String[][] alignments = new String[result.size()][2];
|
||||||
|
for (int i = 0; i < result.size(); i++) {
|
||||||
|
alignments[i][0] = result.get(i)[0];
|
||||||
|
alignments[i][1] = result.get(i)[1];
|
||||||
|
}
|
||||||
|
return alignments;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void backtrack(String s1, String s2, int i, int j, String aligned1, String aligned2, int[][] dp, ArrayList<String[]> result) {
|
||||||
|
if (i == 0 && j == 0) {
|
||||||
|
result.add(new String[]{new StringBuilder(aligned1).reverse().toString(), new StringBuilder(aligned2).reverse().toString()});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i > 0 && j > 0 && s1.charAt(i - 1) == s2.charAt(j - 1) && dp[i][j] == dp[i - 1][j - 1]) {
|
||||||
|
backtrack(s1, s2, i - 1, j - 1, aligned1 + s1.charAt(i - 1), aligned2 + s2.charAt(j - 1), dp, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i > 0 && j > 0 && dp[i][j] == dp[i - 1][j - 1] + 1) {
|
||||||
|
backtrack(s1, s2, i - 1, j - 1, aligned1 + s1.charAt(i - 1), aligned2 + s2.charAt(j - 1), dp, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i > 0 && dp[i][j] == dp[i - 1][j] + 1) {
|
||||||
|
backtrack(s1, s2, i - 1, j, aligned1 + s1.charAt(i - 1), aligned2 + '-', dp, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (j > 0 && dp[i][j] == dp[i][j - 1] + 1) {
|
||||||
|
backtrack(s1, s2, i, j - 1, aligned1 + '-', aligned2 + s2.charAt(j - 1), dp, result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user