3 Commits
Author SHA1 Message Date
mahdi_Goudarzi de2aab5e41 do question 3 2026-04-24 00:27:19 -07:00
mahdi_Goudarzi 8fd66d9681 seconed question 2026-04-23 05:26:28 -07:00
mahdi_Goudarzi ce5e38afc9 do first question(triangel) 2026-04-22 13:25:00 -07:00
2 changed files with 124 additions and 7 deletions
Generated
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
<mapping directory="" vcs="Git" />
</component>
</project>
+123 -6
View File
@@ -1,3 +1,6 @@
import java.util.ArrayList;
import java.util.List;
public class MainExercises
{
/*
@@ -20,8 +23,21 @@ public class MainExercises
*/
public char[][] generateTriangle(int n) {
// todo
return null;
char[][] triangle = new char[n][];
for(int i = 0 ; i < n ; i++){
triangle[i] = new char[i+1];
for(int j = 0 ; j < i+1 ; j++){
if(i == 0 || j == 0 || i== j || i == n-1 ){
triangle[i][j] = '*';
}
else{
triangle[i][j] = ' ';
}
}
}
return triangle;
}
@@ -57,10 +73,55 @@ public class MainExercises
- Number of rows: matrix.length
- Number of columns: matrix[0].length (if rectangular)
*/
public int[] spiralTraversal(int[][] matrix) {
// todo
return null;
int rows = matrix.length;
int columns = matrix[0].length;
int[] result = new int[rows*columns];
int top = 0;
int down = rows-1;
int left = 0;
int right = columns-1;
int counter = 0;
while(top <= down && left <= right){
for (int i = left ; i <= right ; i++){
result[counter] = matrix[top][i];
counter++;
}
top++;
for(int i = top ; i <= down ; i++){
result[counter] = matrix[i][right];
counter++;
}
right--;
if (counter < rows*columns){
for(int i = right ; i >= left ; i--){
result[counter] = matrix[down][i];
counter++;
}
down--;
for(int i = down ; i >= top ; i--){
result[counter]= matrix[i][left];
counter++;
}
left++;
}
}
return result;
}
/*
integer partitioning is a combinatorics problem in discreet maths
@@ -90,11 +151,67 @@ public class MainExercises
body to use them instead of arrays.
*/
private static List<List<Integer>> result;
private static List<Integer> help;
public int[][] intPartitions(int n) {
// todo
return null;
result = new ArrayList<>();
help = new ArrayList<>();
findRecursive(n, n);
int[][] answer = casting(result);
return answer;
}
private static void findRecursive(int target , int max){
if(target == 0){
result.add(new ArrayList<>(help));
return;
}
for(int i = Math.min(target , max) ; i >= 1 ; i--){
help.add(i);
findRecursive(target -i , i);
help.remove(help.size() -1);
}
}
private int[][] casting(List<List<Integer>> input){
int n = input.size();
int[][] answer = new int[n][];
for(int i = 0 ; i < n ; i++){
int k = input.get(i).size();
answer[i] = new int[k];
for(int j = 0 ; j < k ; j++){
answer[i][j] = input.get(i).get(j);
}
}
return answer;
}
public static void main()
{