這是我的代碼。我有1個錯誤。請幫幫我。排列週期
Try this input:
8
1 2 3 4 5 6 7 8
............................................ ...............................................
import java.io.*;
public class permutation
{
public static void main (String []args) throws IOException
{
BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in));
String n="";
int parsen=0, parsenum=0;
System.out.println(n);
n = dataIn.readLine();
parsen=Integer.parseInt(n);
String num[]= new String [1000];
int visited[]=new int [1000];
int vindex[]=new int [2000];
int a=0;
for(int i=1;i<=parsen;i++){
num[i-1]=dataIn.readLine();
parsenum=Integer.parseInt(num[i-1]);
}
int t_visited=0, cycles=0, start=0, index=0;
while(t_visited<parsen)
{
for(int i=1; i<=parsen;i++)
{
if(visited[i]==0)
{
vindex[start]=i;
visited[i]=1;
t_visited++;
index=start;
break;
}
}
while(true)
{
index++;
vindex[index]=parsenum[vindex[index-1]];
if(vindex[index]==vindex[start])
break;
visited[vindex[index]]=1;
t_visited++;
vindex[++index]=0;
start=index+1;
cycles++;
}
System.out.println(cycles+vindex[0]);
for(int i=0;i<(parsen+2*cycles);i++)
{
if(vindex[i]==0)
{
System.out.println();
}else{
System.out.println(vindex[i]);
}
}
}
}
}
謝謝!
另一個代碼: 工作但輸出錯誤。幫助請...我將num聲明爲一個整數。
import java.io.*;
public class permutation
{
public static void main (String []args) throws IOException
{
BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in));
String n="";
int parsen=0;
System.out.println(n);
n = dataIn.readLine();
parsen=Integer.parseInt(n);
int num[]= new int [1000];
int visited[]=new int [1000];
int vindex[]=new int [2000];
int a=0;
for(int i=1;i<=parsen;i++){
num[i-1] = Integer.parseInt(System.console().readLine());
}
int t_visited=0, cycles=0, start=0, index=0;
while(t_visited<parsen)
{
for(int b=1; b<=parsen;b++)
{
if(visited[b]==0)
{
vindex[start]=b;
visited[b]=1;
t_visited++;
index=start;
break;
}
}
while(true)
{
index++;
vindex[index]=num[vindex[index-1]];
if(vindex[index]==vindex[start])
break;
visited[vindex[index]]=1;
t_visited++;
vindex[++index]=0;
start=index+1;
cycles++;
}
System.out.println(cycles+vindex[0]);
for(int c=0;c<(parsen+2*cycles);c++)
{
if(vindex[c]==0)
{
System.out.println();
}else{
System.out.print(vindex[c]);
}
}
}
}
}
的輸出必須
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
你會得到什麼錯誤? – Math
錯誤說: permutation.java:39:錯誤:數組需要,但int發現 vindex [index] = parsenum [vindex [index-1]]; ^ 1錯誤 –
parsenum不是一個數組。 – hexafraction