【第1题】:#include <stdio.h>
#define MAX 256
char f(char * s , int k)
{
char e[128] ;
int i , j ;
for(i = 0 ; i < 128 ; i ++) e[i] = 0 ;
for(j = 0 ; s[j] ; j ++) e[s[j]] ++ ;
for(j = 128 ; j ; j --) if(e[j - 1] >= k) break ;
return (j) ? j - 1 : '#' ;
}
int main(void)
{
char s[MAX][MAX] , y[MAX][MAX] ;
int x[MAX][MAX] , d[MAX] , i , j , n , t ;
scanf("%d" , & t) ;
getchar() ;
for(i = 0 ; i < t ; i ++) {
for(n = 0 ; (s[i][n] = getchar()) != '\n' ; n ++) ;
s[i][n] = '\0' ;
for(j = 0 ; j < n ; j ++) scanf("%d" , & x[i][j]) ;
getchar() ;
d[i] = n ;
}
for(i = 0 ; i < t ; i ++) {
for(j = 0 ; j < d[i] ; j ++) y[i][j] = f(s[i] , x[i][j]) ;
y[i][j] = '\0' ;
printf("%s\n" , y[i]) ;
}
}
编译、运行实况:D:\[exercise]\C>g++ -o x x.c
D:\[exercise]\C>x
3
abcde
1 1 1 1 2
aaabbbcc
1 2 3 4 5 6 7 8
aaaabbbccd
1 2 3 4 5 6 7 8 9 10
eeee#
ccb#####
dcba######
D:\[exercise]\C>
【第2题】:#include <stdio.h>
#define MAX 256
int main(void)
{
char s[MAX][MAX] ;
int x[MAX][MAX] , d[MAX] , b , i , j , n , t ;
scanf("%d" , & t) ;
getchar() ;
for(i = 0 ; i < t ; i ++) {
for(n = 0 ; (s[i][n] = getchar()) != '\n' ; n ++) ;
s[i][n] = '\0' ;
for(j = 0 ; j < n ; j ++) scanf("%d" , & x[i][j]) ;
getchar() ;
d[i] = n ;
}
for(i = 0 ; i < t ; i ++) {
for(n = j = 0 ; j < d[i] ; j ++) {
if(s[i][j] == '#') {
if(n) {
s[i][j] = '\0' ;
printf("%s %d\n" , & s[i][b] , n) ;
n = 0 ;
}
} else {
if(! n) b = j ;
n += x[i][j] ;
}
}
if(n) printf("%s %d\n" , & s[i][b] , n) ;
}
}
编译、运行实况:D:\[exercise]\C>g++ -o x x.c
D:\[exercise]\C>x
3
#####
1 1 1 1 1
##a#a
1 1 1 1 1
aab#c
2 3 1 4 5
a 1
a 1
aab 6
c 5
D:\[exercise]\C>
|