您的位置:首页 > 财经 > 金融 > 免费公司logo设计大全_北京网约车司机真实收入_百度站内搜索_中国推广网站

免费公司logo设计大全_北京网约车司机真实收入_百度站内搜索_中国推广网站

2025/2/24 5:19:06 来源:https://blog.csdn.net/2301_78848414/article/details/143964940  浏览:    关键词:免费公司logo设计大全_北京网约车司机真实收入_百度站内搜索_中国推广网站
免费公司logo设计大全_北京网约车司机真实收入_百度站内搜索_中国推广网站

问题描述

小R拿到了一个 n 行 m 列的小写字母矩阵,她想知道有多少个子矩阵满足以下条件:每个字母在这个子矩阵中最多出现一次。


测试样例

样例1:

输入:n = 2 ,m = 3 ,s = ["aad", "abc"]
输出:13

样例2:

输入:n = 3 ,m = 3 ,s = ["abc", "def", "ghi"]
输出:36

样例3:

输入:n = 4 ,m = 4 ,s = ["abcd", "efgh", "ijkl", "mnop"]
输出:100

题解:

        直接大遍历,纯暴力。本来有想过使用动态规划,但是似乎不那么好找转台转移,就放弃了。

代码: 

#include<iostream>
#include<string>
#include<cstdio>
#include<unordered_map>
#include<vector>
#include<set>
using namespace std;int found(int x,int y,int n,int m,vector<string>s){int i,j,sum=0,h,k,t=0;set<char> st;for(i=0;i<=n-x;i++){for(j=0;j<=m-y;j++){st.clear();t=0;for(k=i;k<i+x;k++){for(h=j;h<j+y;h++){if(st.find(s[k][h])!=st.end()){t=1;}else{st.insert(s[k][h]);}}}if(!t){sum++;}}}return sum;
}int solution(int n, int m, std::vector<std::string> s) {// write code hereint i,j,sum=0;for(i=1;i<=n;i++){for(j=1;j<=m;j++){//cout << i << " " << j << "\n";sum+=found(i,j,n,m,s);}}//cout << sum << "\n";return sum;
}int main() {std::cout << (solution(2, 3, {"aad", "abc"}) == 13) << std::endl;std::cout << (solution(3, 3, {"abc", "def", "ghi"}) == 36) << std::endl;std::cout << (solution(4, 4, {"abcd", "efgh", "ijkl", "mnop"}) == 100) << std::endl;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com