第一道题
注意:tmp<='z'
#include<stdio.h>
int main(){
int flag[26];
for(int i=0;i<=26;i++){
flag[i]=0;
}
char tmp;
while(tmp!='}'){
scanf("%c",&tmp);
if(tmp=='}') break;
if(tmp<='z'&&tmp>='a'){
flag[tmp-'a']++;
}
}
int cnt=0;
for(int i=0;i<26;i++){
if(flag[i]>0) cnt++;
}
printf("%d",cnt);
}
第二道题
注意:s后面要加;
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char s[100000];
int result = 0;
int sum = 0;
int main(){
scanf("%s",&s);
while(1){
if(strlen(s)==1)
break;
sum=0;
for(int i=0;i < strlen(s); i++){
sum+=s[i]-'0';
}
itoa(sum ,s ,10);
result++;
}
printf("%d",result);
return 0;
}
第三道题
缺少int sum=0;
第四道题
代码练习
#include <stdio.h>
int main(){
//第一行输入 两个空格分隔的整数
int n,m;
scanf("%d %d",&n,&m) ;
//定义状态
int dp[12881] ;
//初始化dp[i]=0
for(int i=0;i<=m;i++){
dp[i]=0;
}
//转移方程
for(int i=1;i<=n;i++) {//注意 i=1
//定义重量和价值 两个空格分隔的整数描述魅力i: W i和D i
int w,d;
scanf("%d %d",&w,&d) ;
for(int j=m;j>=w;j--){//注意j>=w
if(dp[j-w]+d>dp[j])
dp[j]=dp[j-w]+d;
}
}
printf("%d\n",dp[m]);
return 0;
}
第五道题
放弃 (考试的时候看一下)
#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
const int N = 1000010;
int n;
struct Range
{
int l, r;
bool operator< (const Range& W)const
{
return l < W.l;
}
}range[N];
int main()
{
int st, ed;
scanf("%d%d", &n, &ed);
st = 1;
for (int i = 0; i < n; i++)
{
int l, r;
scanf("%d%d", &l, &r);
range[i].l = l; range[i].r = r;
}
sort(range, range + n);
int res = 0;
bool success = false;
for (int i = 0; i < n; i++)
{
int j = i, r = -2e9;
while (j < n && range[j].l <= st)
{
r = max(r, range[j].r);
j++;
}
if (r < st)
{
res = -1;
break;
}
res++;
if (r >= ed)
{
success = true;
break;
}
st = r + 1;
i = j - 1;
}
if (!success) res = -1;
printf("%d\n", res);
return 0;
}
第六道题
代码练习
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
using namespace std;
double ans=0;//半径
int n;//路灯数量
int l;//路的长度
double loc[1001];//路灯所在位置
int main(){
scanf("%d %d",&n,&l);
for(int i=0;i<n;i++)//路灯的位置
scanf("%lf",&loc[i]);
sort(loc,loc+n) ;
for(int i=0;i<n;i++)//两两比较,求路灯最大值
ans=max(ans,(loc[i]-loc[i-1])/2.0) ;
if(loc[0]!=0)//起始无路灯
ans=max(ans,loc[0]) ;
if(loc[n-1]!=l)//终点无路灯
ans=max(ans,l-loc[n-1]) ;
printf("%.010lf\n",ans);
return 0;
}
明天学习计划
1.第一套的第四道题和第六道题回顾一下
2.学习第二套的第一道题和第二道题