0
点赞
收藏
分享

微信扫一扫

3.1 简单模拟

若如初梘 2022-04-02 阅读 86
算法

【Codeup 3.1A】剩下的树

http://codeup.hustoj.com/problem.php?cid=100000575&pid=0

分析

题目本身不涉及算法,只是简单的模拟,开个数组就OK了,但是通过这题还是有些知识点收获的

1.scanf的返回值

2.memset()方法(有用

memset可以方便的清空一个结构体变量或数组。

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=10010;
int tree[maxn]={0};
int main()
{
    int l,m;
    scanf("%d%d",&l,&m);//scanf的返回值了解
    while(!(l==0&&m==0)){
        memset(tree,0,l);
        for(int i=0;i<m;i++){
            int b,e;
            scanf("%d%d",&b,&e);
            for(int j=b;j<=e;j++)
                tree[j]=1;
        }
        int cnt=0;
        for(int j=0;j<=l;j++){
            if(tree[j]==0)
                cnt++;
        }
        printf("%d\n",cnt);
        scanf("%d%d",&l,&m);
    }
    return 0;
}

【Code3.1B A+B】

http://codeup.hustoj.com/problem.php?cid=100000575&pid=1

分析

字符串转整数问题,我的代码是逐位扫描乘10相加

for(int i=0;i<=sizeA;i++){
       if(a[i]>='0'&&a[i]<='9')
            numA=numA*10+(a[i]-'0');
       }
       if(a[0]=='-') numA=-numA;

大佬用到了sscanf()函数,这确实比我的方法妙不少

sscanf()函数用法:

大佬代码:

#include <cstdio>
#include <cstring>
void dispose(char a[])
{
	char temp[15]={0};
	int pos=0;
	for(int i=0;i<strlen(a);i++)
		if(a[i]!=',')
			temp[pos++]=a[i];
	for(int i=0;i<strlen(a);i++)
		a[i]=temp[i];
}
int main()
{   
	char A[15],B[15];
	while(scanf("%s %s",A,B)!=EOF)
	{
		int a,b;
		dispose(A);
		dispose(B);
		sscanf(A,"%d",&a);
		sscanf(B,"%d",&b);
		printf("%d\n",a+b);
		memset(A,0,sizeof(A));
		memset(B,0,sizeof(B));
	}
	return 0;
}

 对了还有,scanf("%s")适用char型数组,别整string或者char*

【Codeup3.1C 特殊乘法】 

http://codeup.hustoj.com/problem.php?cid=100000575&pid=2

分析

乍一看,是整数转字符串型的,但是其实可以再简单一点点的

输入的时候就以char[ ]类型输入,然后直接for(int i=0;i<strlen(a);i++)遍历a[ ]即可

(补充:strlen(a):遇到\0结束)

代码如下:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    char a[10],b[10];
    while(~scanf("%s%s",a,b)){
        int ans=0;
        int size1=strlen(a),size2=strlen(b);
        for(int i=0;i<size1;i++){
            for(int j=0;j<size2;j++){
                ans+=(a[i]-'0')*(b[j]-'0');
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

【Codeup3.1F 】

分析

题目很简单,但是希望注意以下问题

举报

相关推荐

0 条评论