全部评论
卧槽,我咋当时就没想到这个问题!
上代码 #include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
string str;
cin>>str;
map<char,int> mp;
for(int i=0;i<str.size();i++)
{
mp[str[i]]++;
}
int max=0;
for(auto i=mp.begin();i!=mp.end();i++)
{
max = max < (*i).second ? (*i).second : max;
}
cout<<max;
}
我也是这个思路,不清楚为啥只有64%
对哦,一定是单个字符子串的最大值就是第一题的最大值,😭😭😭,我傻傻的遍历了两个字符,三个字符的字符串,最后超时了。
2 再说散步,其实更简单了,每次都有两个结果,要么左要么右,典型的dfs啊,循环退出条件为起点超出范围,循环结束条件为D数量用完。
贪心算法解散步问题只有91%,不知道哪里出错了
python可以参考 https://blog.csdn.net/z13653662052/article/details/100175482
n = list(input())
count = [0] * 26
block_times = 0
for i in n:
count[ord(i) - 97] += 1
ans = max(count)
print(ans) 为啥只过了9。。。。。。
#include<iostream>
#include<map>
#include<vector>
using namespace std;
map<int,int> mp;
void dfs(const vector<int> & vec,int index,int start,int n)
{
if(start>=1 && start<=n)
{
if(index>=vec.size())
{
mp[start]++;
}
else
{
dfs(vec,index+1,start+vec[index],n,count);
dfs(vec,index+1,start-vec[index],n,count);
}
}
}
int main()
{
int n,m;
cin>>n>>m;
vector<int> vec;
while (m--)
{
int tmp;
cin>>tmp;
vec.push_back(tmp);
}
for(int i=1;i<=n;i++)
{
dfs(vec,0,i,n);
}
cout<<mp.size();
}
递归写的dfs,只过了0.73,当时怎么都想不起来怎么改循环了,哎
我去?第二题是可能的终点的位置吗,我算的起点,我说怎么测试用例过不去。
https://www.nowcoder.com/discuss/240269?toCommentId=3786919
相关推荐