You are on page 1of 3

package pachetel;

import java.io.FileReader;
import java.util.Scanner;

class Test{
public int k,i,j,n,varglob=1,minglob=99999;
public int[][] vec=new int[20][20];
public int[] ar= new int[20];

public void citMat(){

try{
Scanner in = new Scanner(new FileReader("tst.txt"));
n=in.nextInt();
while(in.hasNext()){
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
vec[i][j]=in.nextInt();
}
}
}
in.close();
}catch(Exception e){
System.out.println("file not found");
}
}

public void afisareMat(){


System.out.println("Matrice:");
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
System.out.print(vec[i][j]+" ");
}System.out.println(" ");
}
}

public void aranj(){//gen toate combinatile de n cifre, cifrele din nr. gen.
<=n
int a;
boolean ok=true;

while((ar[n+1]!=1)&&(ok)){
ar[1]=ar[1]+1;
for(a=1;a<=n+3;a++){
if(ar[a]==n+1){
ar[a]=1;
ar[a+1]=ar[a+1]+1;
}
}
if(ar[n+1]==1){
ok=false;
}
drum_Aranj();
}
}

public void drum_Aranj(){//selescteaza doar permutarile


int poz=1;
boolean ok=true;
while(poz<n){
for(i=poz;i<n;i++){
if((ar[i+1]==0)){
ok=false;
}

if(ar[poz]==ar[i+1]){
ok=false;
}
}
if(!ok){
poz=n;
}

poz+=1;
}

if(ok){
calc_sum();//afiseaza permutarea
}
}

public void afisare(){


int var=ar[1];
for(j=1;j<=n;j++){
System.out.print(ar[j]+" ");
}System.out.print(var+" ");// ultimul=primul nod

public void calc_sum(){

int ciclu=1,sum=0;
int con=ar[1];
int x=ar[ciclu], y=ar[ciclu+1];
while(ciclu<=n){
sum+=vec[x][y];
x=y;
y=ar[ciclu+1];
ciclu+=1;
}
sum+=vec[x][con];

if(sum<=minglob){
minglob=sum;
}

if(sum<=minglob){
minglob=sum;
System.out.println("");
afisare();
System.out.print(" Suma="+sum);
}

}
}

public class Rulare {

public static void main(String[] args) {

Test t1=new Test();


t1.citMat();
t1.afisareMat();
t1.aranj();

You might also like