div2 6.3

1

不懂题意

<>表示移动方向,不能越界

#include<stdio.h>

int main()

{

int i,j,n,t,count;

char a[200005];

count=0;

scanf("%d",&n);

scanf("%s",&a);

for(i=0;i<n;i++)  

    {  

        if(a[i]=='<')  

        {  

            count++;  

        }  

        else  

        {  

            break;  

        }  

    }

for(i=n-1;i>=0;i--)  

    {  

        if(a[i]=='>')  

        {  

            count++;  

        }  

        else  

        {  

            break;  

        }  

    }  

printf("%d\n",count);

return 0;

 }

2

尽量简化算法,处理数字比处理字符数组简单

#include<stdio.h>

int main()

{

    int i,t,hour,min;

    scanf("%d:%d",&hour,&min);

t=0;

    while(min/10!=hour%10||min%10!=hour/10)

    {

     min++;

     if(min==60)

     {

     hour++;min=0;

}

if(hour==24)

{

hour=0;

}

t++;

}

printf("%d\n",t);

return 0;

 }

3

列出每种情况,鸡兔同笼

找不到规律,就挨个算

#include<stdio.h>

int main()

{

    int n,a;

    scanf("%d",&n);

    while(n--)

    {

     scanf("%d",&a);

     if((a%3==0)||(a%7==0)||a==10||a>11)

     {

     printf("YES\n");

}

else

{

printf("NO\n");

}

}

return 0;

 }

4

简单问题找规律,简化代码

#include<stdio.h>

int main()

{

long long n;

scanf("%lld",&n);

if(n%2==0)

{

printf("%lld\n",n/2);

}

else

{

printf("%lld\n",(-1)*(n+1)/2);

}

return 0;

}

5

每种情况必须考虑,不能想当然

#include<stdio.h>

int main()

{

int a,b,c,max;

scanf("%d%d%d",&a,&b,&c);

max=a+b+c;

if(max<a+b*c)

{

max=a+b*c;

}

if(max<a*b*c)

{

max=a*b*c;

}

if(max<a*b+c)

{

max=a*b+c;

}

if(max<(a+b)*c)

{

max=(a+b)*c;

}

if(max<a*(b+c))

{

max=a*(b+c);

}

printf("%d\n",max);

return 0;

}

6

注意出现VK时,要转换为其他字符

数过的就不用再数

#include<stdio.h>

#include<string.h>

int main()

{

int t,i,len;

t=0;

char a[101];

scanf("%s",&a);

len=strlen(a);

for(i=0;i<len-1;i++)

{

if(a[i]=='V'&&a[i+1]=='K')

{

t++;a[i]='v';a[i+1]='k';

}

}

for(i=0;i<len-1;i++)

{

if((a[i]=='V'&&a[i+1]=='V')||(a[i]=='K'&&a[i+1]=='K'))

{

t++;break;

}

}

printf("%d\n",t);

return 0;

}

7

#include<stdio.h>

int main()

{

int n,t,a;

scanf("%d",&n);

t=0;

while(n--)

{

scanf("%d",&a);

if(a<=500000)

{

if(t<a)

{

t=a-1;

}

}

else

{

if(t<1000000-a)

{

t=1000000-a;

}

}

}

printf("%d\n",t);

return 0;

}

8

#include<iostream>

#include<stdio.h>

#include<string.h>

#include<algorithm>

using namespace std;

struct tests

{

int s;

int d;

int c;

int num;

};

bool cmp(tests a,tests b)

{

return a.d<b.d;

}

int main()

{

int n,m,i,j,t;

int day[101];

struct tests a[101];

scanf("%d%d",&n,&m);

memset(day,0,sizeof(day));

for(i=1;i<=m;i++)

{

scanf("%d%d%d",&a[i].s,&a[i].d,&a[i].c);

a[i].num=i;

day[a[i].d]=m+1;

}

sort(a+1,a+m+1,cmp);

for(j=1;j<=n;j++)

{

for(i=1;i<=m;i++)

{

if(day[j])

{

continue;

}

if(j>=a[i].s&&j<a[i].d)

{

if(a[i].c)

{

day[j]=a[i].num;a[i].c--;

    }

}

    }

}

t=1;

for(i=1;i<=m;i++)

{

if(a[i].c)

{

printf("-1\n");t=0;break;

}

    }

if(t)

{

for(j=1;j<n;j++)

{

printf("%d ",day[j]);

}

printf("%d\n",day[j]);

    }  

return 0;

 }

9

用strcpy相当于给字符串挨个赋值

不能单独直接赋值字符串数组

用指针

#include<stdio.h>

#include<string.h>

int main()

{

int h1,a1,c1,h2,a2,i,j;

    char a[100000][10];

scanf("%d%d%d%d%d",&h1,&a1,&c1,&h2,&a2);

i=0;

while(h2>0)

{

if(h1<=a2&&h2>a1)

{

h1+=c1;

h1-=a2;

strcpy(a[i],"HEAL");

}

else

{

h1-=a2;

h2-=a1;

strcpy(a[i],"STRIKE");

}

i++;

}

printf("%d\n",i);

for(j=0;j<i;j++)

{

printf("%s\n",a[j]);

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值