Facebook
From ibrahim tarhan, 3 Years ago, written in Java.
Embed
Download Paste or View Raw
Hits: 128
  1.  
  2. package javaapplication40;
  3.  
  4. import java.util.ArrayList;
  5. import java.util.List;
  6.  
  7. public class JavaApplication40 {
  8.  
  9.    
  10.    
  11.     public static boolean IsPrime(int number)
  12.     {//Burda matris elemanı asal mı degil mi
  13.         if(number == 1)
  14.             return false;
  15.         for(int i=2;i<=number/2;i++){
  16.             if(number%i==0){
  17.                 return  false;
  18.             }
  19.         }
  20.         return  true;
  21.     }
  22.    
  23.     public static int FirstX;
  24.     public static int FirstY;
  25.     public static int FirstNonPrime(ArrayList<List<Integer>> Mat)
  26.     { // Burda piramidin en ustnden ilk asal olmayan sayıyı ve indexini buluyoruz
  27.    
  28.         for(int i=0;i<Mat.size();i++){
  29.        
  30.             for(int j=0;j<Mat.get(0).size();j++){
  31.            
  32.                 if(!IsPrime(Mat.get(i).get(j))){
  33.                     FirstX=i;
  34.                     FirstY=j;
  35.                     return Mat.get(i).get(j);
  36.                 }
  37.             }
  38.         }
  39.         return 0;
  40.     }
  41.    
  42.     private static boolean isSafe( ArrayList<List<Integer>> Mat, int visited[][], int x, int y)
  43.     {//Bu metod gidecegimiz noktanın uygun olup olmadıgını kontrol eder
  44.         return !(IsPrime(Mat.get(x).get(y))==true || visited[x][y] != 0);
  45.     }
  46.  
  47.     private static boolean isValid(int x, int y ,ArrayList<List<Integer>> Mat) //Burası matris dısına cıkmamak icin
  48.     {
  49.         return (x < Mat.size() && y < Mat.get(0).size() && x >= 0 && y >= 0);
  50.     }
  51.    
  52.     public static int toplam=0;
  53.     public static long MaxSum=0;
  54.     public static void FindMaxSum(ArrayList<List<Integer>> Mat, int visited[][],int i, int j, int x, int y){
  55.        
  56.         visited[i][j] = 1;
  57.            
  58.         if (isValid(i + 1, j - 1 , Mat) && isSafe(Mat, visited, i + 1, j - 1)) // sol asagı
  59.         {
  60.             toplam+=Mat.get(i+1).get(j-1);
  61.             System.out.println( i+1 + " , " + (j-1) +"deger:" + Mat.get(i+1).get(j-1) +"toplam:" +toplam);
  62.             FindMaxSum(Mat, visited, i + 1, j -1, x, y);
  63.         }
  64.         if (isValid(i + 1, j , Mat) && isSafe(Mat, visited, i + 1, j )) // asagı
  65.         {
  66.             toplam+=Mat.get(i+1).get(j);
  67.             System.out.println( i+1 + " , " + (j) +"deger:" + Mat.get(i+1).get(j) +"toplam:" +toplam);
  68.             FindMaxSum(Mat, visited, i + 1, j , x, y);
  69.         }
  70.         if (isValid(i + 1, j + 1 , Mat) && isSafe(Mat, visited, i + 1, j + 1)) // sag
  71.         {
  72.             toplam+=Mat.get(i+1).get(j+1);
  73.             System.out.println( i+1 + " , " + (j+1) +"deger:" + Mat.get(i+1).get(j+1) +"toplam:" +toplam);
  74.             FindMaxSum(Mat, visited, i + 1, j +1, x, y);
  75.         }
  76.        
  77.        
  78.         if(MaxSum<toplam)
  79.             MaxSum=toplam;
  80.        
  81.        
  82.         toplam-=Mat.get(i).get(j);//ger dondugunde tolamdan cıkar
  83.         System.out.println("toplam:" + toplam);
  84.         visited[i][j]=0;
  85.            
  86.     }
  87.    
  88.    
  89.     public static void main(String[] args) {
  90.        
  91.          ArrayList<List<Integer>> Mat = new ArrayList<List<Integer>>();
  92.            
  93.         /*int[][] mat =
  94.         {
  95.             {215,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
  96.             {193,124,0,0,0,0,0,0,0,0,0,0,0,0,0},
  97.             {117,237,442,0,0,0,0,0,0,0,0,0,0,0,0},
  98.             {218,935,347,235,0,0,0,0,0,0,0,0,0,0,0},
  99.             {320,804,522,417,345,0,0,0,0,0,0,0,0,0,0},
  100.             {229,601,723,835,133,124,0,0,0,0,0,0,0,0,0},
  101.             {248,202,277,433,207,263,257,0,0,0,0,0,0,0,0},
  102.             {359,464,504,528,516,716,871,182,0,0,0,0,0,0,0},
  103.             {461,441,426,656,863,560,380,171,923,0,0,0,0,0,0},
  104.             {381,348,573,533,447,632,387,176,975,449,0,0,0,0,0},
  105.             {223,711,445,645,245,543,931,532,937,541,444,0,0,0,0},
  106.             {330,131,333,928,377,733,017,778,839,168,197,197,0,0,0},
  107.             {131,171,522,137,217,224,291,413,528,520,227,229,928,0,0},
  108.             {223,626,34,683,839,53,627,310,713,999,629,817,410,121,0},
  109.             {924,622,911,233,325,139,721,218,253,223,107,233,230,124,233}
  110.            
  111.         };*/
  112.        
  113.         /*int[][] mat = {
  114.             {0,1,0,0,0},
  115.             {0,8,4,0,0},
  116.             {2,0,6,9,0},
  117.             {8,5,0,9,3}
  118.         };*/
  119.        
  120.         int[][] mat = {
  121.             {215,0,0,0,0},
  122.             {193,124,0,0,0},
  123.             {117,237,442,0,0},
  124.             {218,935,347,235,0},
  125.             {320,804,522,417,345}
  126.         };
  127.        
  128.         for(int i=0;i<mat.length;i++){
  129.        
  130.             Mat.add( new ArrayList<Integer>());
  131.             for(int j=0;j<mat[0].length;j++){
  132.                 Mat.get(i).add(mat[i][j]);
  133.                
  134.             }
  135.         }
  136.        
  137.         for(int i=0;i<Mat.size();i++){
  138.        
  139.             for(int j=0;j<Mat.get(0).size();j++){
  140.            
  141.                 System.out.print(Mat.get(i).get(j) + ",");
  142.             }
  143.             System.out.print("\n");
  144.         }
  145.         System.out.println(Mat.size() + "tane satir " + Mat.get(0).size() + "tane sutun");
  146.        
  147.        
  148.         int[][] visited = new int[Mat.size()][Mat.get(0).size()];//M=Mat.size()  N=Mat.get(0).size()
  149.         toplam+=FirstNonPrime(Mat); //piramitteki ilk asal olmayan sayıyı bul
  150.  
  151.         FindMaxSum( Mat, visited, FirstX, FirstY, 20, 20);
  152.         System.out.println("max top:" + MaxSum);
  153.        
  154.     }
  155.    
  156. }
  157.