#include <stdio.h>
/************found************/
fun (char *a) {
if (*a) {
fun(a + 1);
/************found************/
printf("%c",*a);
}
}
int main() {
char s[100] = {0};
gets(s);
fun(s);
return 0;
}
注意事项
注意错误可能很简单,比如说一个逗号一个分号。
13
答案
cpp复制代码
#include <stdio.h>
#define N 15
int main() {
int a[N][N] = {0}, i, j, k, m, n;
scanf("%d", &n);
if (n % 2 == 0)
m = n / 2 ;
else
/**********found**********/
m = (n+1)/2;
for (i = 0; i < m; i++) {
/**********found**********/
for (j = i ; j < n - i; j++)
a[i][j] = a[n - i - 1][j] = i + 1;
for (k = i + 1; k < n - i; k++)
/**********found**********/
a[k][i] = a[k][n - i - 1] = i+1;
}
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++)
printf("%3d", a[i][j]);
printf("\n");
}
return 0;
}
注意事项
填空题要注意上下文。
23
答案
cpp复制代码
#include<bits/stdc++.h>
using namespace std;
/*你的王国里有一条n个头的恶龙,你希望雇佣一些骑士把它杀死(也就是砍掉所有的头)。
村里有m个骑士可以雇佣,一个能力值为 x 的骑士可以砍掉恶龙一个直径不超过 x 的头,且需要报酬 x 个金币。
如何雇佣骑士才能砍掉恶龙所有的头,并且支付最小的金币?
注意,一个骑士只能砍一个头并且仅能被雇佣1次。
输入说明
输入包含多组测试数据。
每组测试数据的第一行输入两个整数n和m(m和n都在1到20000 之间), n表示龙拥有的头的数目 , m表示王国中的骑士数。
接下来的 n 个整数为龙头的直径,再接下来m个整数为骑士的能力值。
输出说明
对于每组测试数据, 输出一行包含国王杀死龙需要支付的最低数量的金币。如果骑士不可能杀死龙, 输出一行:
"Lose!"(输出不包含引号)*/
int main(){
int n,m;
while(cin>>n>>m){
vector<int> N(n);
vector<int> M(m);
for(int i=0;i<n;i++){
cin>>N[i];
}
for(int i=0;i<m;i++){
cin>>M[i];
}
sort(N.begin(),N.end());
sort(M.begin(),M.end());
int coin=0;
int k=0;
for(int i=0;i<n;i++){
while(N[i]>M[k]&&k<m){
k++;
}
if(k<m){
coin+=M[k];
k++;
}else{
coin=-1;
break;
}
}
if(coin==-1){
cout<<"Lose!"<<endl;
}else{
cout<<coin<<endl;
}
}
return 0;
}
注意事项
注意骑士斩杀恶龙之后,骑士指针k要+1。
33
答案
cpp复制代码
#include<bits/stdc++.h>
using namespace std;
/*给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),
如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的。
输入说明
第一行一个数字L。
第二行是字符串S。
L大于0,且不超过S的长度。
n<=60
S中所有字符都是小写英文字母。
输出说明
一行,题目要求的字符串。
输入样例1:
4
bbaabbaaaaa
输出样例1:
bbaa
输入样例2:
2
bbaabbaaaaa
输出样例2:
aa*/
int main(){
int L;
cin>>L;
string S;
cin>>S;
int n=S.length();
string ans="";
int bestcnt=-1;
int bestpos=n;
for(int i=0;i<n;i++){
for(int len=L;i+len<n;len++){
string sub=S.substr(i,len);
int cnt=0;
int firstpos=-1;
for(int j=0;j+len<n;j++){
if(S.substr(j,len)==sub){
cnt++;
}
if(firstpos==-1)firstpos=j;
}
if(cnt>bestcnt||(cnt==bestcnt&&len>(int)ans.length())||
(cnt==bestcnt&&len==(int)ans.length()&&firstpos<bestpos)){
ans=sub;
bestcnt=cnt;
bestpos=firstpos;
}
}
}
cout<<ans<<endl;
return 0;
}