1 条题解
-
0
C :
#include <stdio.h> #define max 500 int count=0; int repeat(char str[],int a ,int b ) { int i; if(b>a) for(i=a;i<b;i++) if(str[i]==str[b]) return 0; return 1; } void perm(char str[],int k,int m) { int i; if(k==m) { count++; for(i=0;i<=m;i++) printf("%c",str[i]); printf("\n"); return ; } else for(i=k;i<=m;i++) if(repeat(str,k,i)) { char t; t=str[i]; str[i]=str[k]; str[k]=t; perm(str,k+1,m); t=str[i]; str[i]=str[k]; str[k]=t; } } int main() { char str[max]; int n,i; scanf("%d",&n); getchar(); for(i=0;i<n;i++) scanf("%c",&str[i]); perm(str,0,n-1) ; printf("%d\n",count); return 0; }
C++ :
#include <iostream> #include <algorithm> using namespace std ; long ans ; int ok(char str[],int a ,int b ) { if( b > a) for(int i = a ; i< b ; i++) if( str[i] == str[b] ) return 0 ; return 1 ; } void perm(char str[],int k ,int m) { int i ; if( k == m ) { ans ++ ; for( i = 0 ;i <= m ;i++ ) { cout<<str[i]; } cout<<endl; } else for( i = k ; i <= m ;i++) if( ok(str,k,i) ) { swap ( str[k],str[i] ); perm(str, k+1 , m ); swap(str[k],str[i] ) ; } } int main(int argc, char* argv[]) { char str[1000]; int n , i ; cin>>n ; ans = 0 ; for( i = 0 ; i < n ; i ++) cin>>str[i]; perm(str,0,n-1) ; cout<<ans<<endl; return 0; }
Java :
import java.awt.List; import java.util.Scanner; /** * * @author wanshuzhen */ public class Main { public static int ans=0; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); char [] list = new char[n]; list = sc.next().toCharArray(); perm(list, 0, n-1); // System.out.print("输出序列为:"); System.out.println(ans); } public static void perm(char []list ,int k, int m) { if(k==m) { ans++; for (int i=0;i<=m;i++){ System.out.print(list[i]); } System.out.println(); } else{ for(int i=k;i<=m;i++) if(ok(list,k,i)){ swap(list,k,i); perm(list, k+1, m); swap(list,k,i); } } } public static boolean ok(char []list,int k,int i){ if(i>k)for(int t=k;t<i;t++)if(list[t]==list[i])return false; return true; } public static void swap(char []list ,int i,int j){ char temp; temp= list[i]; list[i]=list[j]; list[j]=temp; } }
- 1
信息
- ID
- 116
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者