算法题0

简介: 第一题:判断数字给定一个整数 n,请你统计其各位数字中 4 和 7 的出现次数。如果 4 的出现次数加上 7 的出现次数恰好等于 4 或 7,则输出 YES,否则输出 NO。例如,当 n=40047 时,4 出现了 2 次,7 出现了 1 次,2+1=3,既不是 4 也不是 7,因此,输出 NO;当 n=7747774 时,4 出现了 2 次,7 出现了 5 次,2+5=7,因此,输出 YES。

第一题:判断数字

给定一个整数 n,请你统计其各位数字中 4 和 7 的出现次数。

如果 4 的出现次数加上 7 的出现次数恰好等于 4 或 7,则输出 YES,否则输出 NO。

例如,当 n=40047 时,4 出现了 2 次,7 出现了 1 次,2+1=3,既不是 4 也不是 7,因此,输出 NO;当 n=7747774 时,4 出现了 2 次,7 出现了 5 次,2+5=7,因此,输出 YES。

输入格式

一个整数 n。

输出格式

一行,YES 或者 NO。

数据范围

所有测试点满足 1≤n≤1018。

输入样例1:

40047

输出样例1:

NO

输入样例2:

7747774

输出样例2:

YES

**分析:这道题不难,用c,c++都能做,我这里用c++做了

源码:**

include

include

include

using namespace std;

int main(void)

{

string n;
cin >> n;
int a=0;
int b=n.length();
for(int i=0;i<b;i++)
{
if(n[i]==52||n[i]==55)
    {
        a++;
    }
}
if(a==4||a==7)
{
cout <<"YES" <<endl;
}else{
cout <<"NO" <<endl;
}
return 0;

}

**新学的c++,练练手,可能以后都要用c++和java了。

第二题:最长合法括号子序列**

一个合法的括号序列满足以下条件:

序列()被认为是合法的。

如果序列X与Y是合法的,则XY也被认为是合法的。

如果序列X是合法的,则(X)也是合法的。

例如,(),()(),(())这些都是合法的。

现在,给定一个由 ( 和 ) 组成的字符串。

请你求出其中的最长合法括号子序列的长度。

注意,子序列不一定连续。

输入格式

共一行,一个由 ( 和 ) 组成的字符串。

输出格式

一个整数,表示最长合法括号子序列的长度。

数据范围

前五个测试点满足, 1≤输入字符串的长度≤10。

所有测试点满足,1≤输入字符串的长度≤106。

输入样例1:

(()))(

输出样例1:

4

输入样例2:

()()(()(((

输出样例2:

6

**分析:这道题用到数据结构中的栈,非常简单。

源码:**

include

include

include

include //记得导入头文件

include

using namespace std;

int main()

{

stack <char>stk;
string s;
cin >> s;
int a=s.length();
int b=0;
for(int i=0;i<a;i++)
{
if(s[i]==40)
    {
        stk.push(s[i]);
    }else if(s[i]==41)
    {
if(stk.empty())
        {
continue;
        }else{
            stk.pop();
            b++;
            b++;
        }
    }
}
cout << b <<endl;
return 0;

}

第三题:电话号码

一个电话销售员正在整理他的电话簿。

电话簿中记录了他的全部客户的电话号码。

一个客户可能有不止一个电话号码。

不同客户可能拥有完全相同的电话号码。

电话簿中一共包含 n 条记录。

每条记录都是首先包含一个字符串,表示客户的姓名,然后包含一个整数,表示本条记录包含的电话号码数量,最后是本条记录所包含的电话号码。

不同客户的姓名两两不同,所以如果两条记录包含的客户姓名相同,那么我们认为这都是记录的同一人的电话信息。

同一记录中可能包含相同的电话号码,不同记录中也可能包含相同的电话号码。

在进行整理时,应遵守如下原则:

如果一个客户拥有多条记录,则需要将这些记录进行合并,每人只保留一条记录,去记录他的全部有效号码。

如果一个客户记录的多个电话号码完全相同,则只保留一个作为有效号码,其余的全部视为无效号码。

如果一个客户记录的两个不同电话号码 a 和 b 满足 a 是 b 的后缀,则号码 a 视为无效号码。

请输出整理后的电话记录。

输入格式

第一行包含整数 n,表示记录数量。

接下来 n 行,每行描述一条记录,首先包含一个长度不超过 10 的由小写字母构成的非空字符串,表示客户姓名,然后包含一个不超过 10 的正整数,表示本条记录包含的号码数量,最后包含本条记录的所有号码,每个号码都是长度不超过 10 的由数字构成的非空字符串,可能包含前导 0。

输出格式

首先输出一个整数 m,表示完成整理后的记录数量。

接下来 m 行,每行输出一条记录信息,格式要求与输入一致。

同一行的数据之间用单个空格隔开。

记录的先后顺序随意,一条记录中的号码顺序随意。

数据范围

前三个测试点满足 1≤n≤4。

所有测试点满足 1≤n≤20。

输入样例1:

2

i 1 00123

m 1 00123

输出样例1:

2

m 1 00123

i 1 00123

输入样例2:

3

l 2 612 12

p 1 12

k 1 612

输出样例2:

3

k 1 612

p 1 12

l 1 612

输入样例3:

4

i 3 123 123 456

i 2 456 456

i 8 789 3 23 6 56 9 89 2

d 2 23 789

输出样例3:

2

d 2 23 789

i 4 789 123 2 456

分析:有点难,暂定

目录
相关文章
|
7月前
|
算法 搜索推荐 Shell
带你快速掌握使用c++写一些基本的算法
带你快速掌握使用c++写一些基本的算法
45 0
|
1月前
|
算法
多边形裁剪算法
多边形裁剪算法
|
算法
秒懂算法 | 基环树
图论是一个“巨大”的专题,有大量的知识点,有众多广为人知的问题,有复杂的应用场景。 图论算法常常建立在复杂的数据结构之上。
250 0
秒懂算法 | 基环树
|
存储 算法 测试技术
《算法》世界
一.什么是算法 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。一个算法必须具有:有穷性、确切性、输入项、输出项、可行性五个性质。
190 0
《算法》世界
|
存储 算法 搜索推荐
C#算法大全(上)
今天有人想让我搞一期C#算法大全。算法就算法,安排上!
拓展欧几里得算法
拓展欧几里得算法
64 0
|
机器学习/深度学习 算法 程序员
揭秘黑盒子:算法是如何产生的?
随着软件和算法对我们生活方方面面产生的影响越来越大,人们对它们的兴趣也越来越大,并且更加关注算法是如何影响社会、经济和政治的。
175 0
|
算法
算法技巧总结
算法技巧总结
1358 0
|
算法 搜索推荐 数据库
|
人工智能 算法 C++
A*算法
哈哈!A*算法我懂了!当然,我希望你有这样的感觉!不过我还要再说几句。仔细看看这个程序,你会发现,这个程序和我前面说的伪程序有一些不同,在GenerateSucc函数中,当子节点在Closed表中时,没有将子节点从Closed表中删除并放入Open表中。
1257 0