1007
4328 ワード
合計時間制限:
1000ms
メモリの制限:
65536kB
説明
長さが等しいDNA列(ACGTの4文字のみ)がいくつかありますが、逆順ペアの数で並べ替えてください.
逆順序対とは、文字列Aの2文字A[i],A[j]を指し、iA[j]の性質を有する.例えば、文字列「ATCG」では、TとCは逆シーケンス対であり、TとGは別の逆シーケンス対であり、この文字列の逆シーケンス対数は2である.
入力
1行目:2つの整数nとm,n(02行目からm+1行目:各行はnの長さの文字列である
しゅつりょく
逆順対数の少ないものから複数の出力文字列まで、逆順対数のように多くの文字列が入力された順序で出力されます.
サンプル入力
サンプル出力
解決方案一:G++
ソリューション2:Java
1000ms
メモリの制限:
65536kB
説明
長さが等しいDNA列(ACGTの4文字のみ)がいくつかありますが、逆順ペアの数で並べ替えてください.
逆順序対とは、文字列Aの2文字A[i],A[j]を指し、i
入力
1行目:2つの整数nとm,n(0
しゅつりょく
逆順対数の少ないものから複数の出力文字列まで、逆順対数のように多くの文字列が入力された順序で出力されます.
サンプル入力
10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT
サンプル出力
CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA
解決方案一:G++
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std ;
#define N 51
#define M 101
int main()
{ int count(const char ch[],int len) ;
void swap(char ch[][N],int a[],int len) ;
void print(char ch[][N],int len) ;
char ch[M][N] ;
int a[M];
int n,m ;
cin>>n>>m ;
for(int i=0;i<m;i++)
{
cin>>ch[i];
int len = strlen(ch[i]) ;
a[i] = count(ch[i],len) ;
}
swap(ch,a,m) ;
print(ch,m) ;
return 0 ;
}
int count(const char ch[],int len){
int k=0;
for(int i=0;i<len;i++)
{
for(int j=i+1;j<len;j++){
if((ch[j]-ch[i])<0) k++ ;
}
}
return k ;
}
void swap(char ch[][N],int a[],int len)
{
for(int i=0;i<len;i++){
int temp = a[i] ;
char c[51];
for(int j=i+1;j<len;j++){
if(a[i]>a[j]){
temp = a[i] ;
a[i] = a[j] ;
a[j] = temp ;
strcpy(c,ch[i]) ;
strcpy(ch[i],ch[j]) ;
strcpy(ch[j],c) ;
}
}
}
}
void print(char ch[][N],int len)
{
for(int i=0;i<len;i++)
{
cout<<ch[i]<<endl ;
}
}
ソリューション2:Java
package dsa;
import java.util.Scanner;
/**
* 1007
* @author tanlvxu
*
*/
public class Demo9 {
public static void main(String[] args) {
test();
}
public static void test()
{
Scanner sc = new Scanner(System.in) ;
int n = sc.nextInt() ;
int m = sc.nextInt() ;
String str[] = new String[m] ;
int a[] = new int[m] ;
for(int i=0;i<m;i++)
{
str[i] = sc.next() ;
a[i] = count(str[i]) ;
}
swap(str,a) ;
print(str) ;
}
/**
*
* @param str
* @return
*/
public static int count(String str)
{
int k = 0 ;
for(int i=0;i<str.length();i++)
{
for(int j=i+1;j<str.length();j++)
{
if(str.charAt(i)-str.charAt(j)>0) k++ ;
}
}
return k ;
}
/**
*
* @param str
*/
public static void print(String str[])
{
for(int i=0;i<str.length;i++)
{
System.out.println(str[i]) ;
}
}
/**
*
* @param str
* @param a
*/
public static void swap(String str[],int a[])
{
for(int i=0;i<str.length;i++)
{
int temp = a[i] ;
String s ;
for(int j=i+1;j<str.length;j++)
{
if(a[i]>a[j]){
temp = a[i] ;
a[i] = a[j] ;
a[j] = temp ;
s = str[i] ;
str[i] = str[j] ;
str[j] = s ;
}
}
}
}
}