题解 | #压缩二维码#

压缩二维码

https://www.nowcoder.com/practice/1150d36c2cd64df9bf373988486c6723

解题思路

将二维码转换为一维码(确信)
就是,将 行字符串依次拼接起来
每四个一组,进行翻译

代码

#include <iostream>
#include <string>
#include <vector>
using namespace std;
const int N=1100;
string a[N];
string s;
vector<int> ans; 
int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n,i,j,k,w;
	cin>>n;
	n=1<<n;
	for(i=0;i<n;++i)
		cin>>a[i];
	for(i=0;i<n;++i)
		s+=a[i];
	for(i=0;i<n*n;i+=4)
	{
		w=0;
		for(k=0;k<4;++k)
			w=w*2+(s[i+k]=='#'?1:0);
		ans.emplace_back(w);
	}
	for(auto &x:ans)
		cout<<x<<' ';
	return 0;
}
import java.util.*;
public class ZT11 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(),i,j,k,w;
        n=1<<n;
        StringBuffer s=new StringBuffer();
        ArrayList<Integer> ans=new ArrayList<>();
        for(i=0;i<n;i++){
            String tmp=sc.next();
            s.append(tmp);
        }
        for(i=0;i<n*n;i+=4){
            w=0;
            for(k=0;k<4;++k)
                w=w*2+(s.charAt(i+k)=='#'?1:0);
            ans.add(w);
        }
        for(Integer x:ans)
            System.out.print(x+" ");
    }
}
n=int(input())
n=1<<n
a=[input() for i in range(0,n)]
s=''.join(a)
ans=[]
for i in range(0,n*n,4):
    w=0
    for k in range(0,4):
        w=w*2+(1 if s[i+k]=='#' else 0)
    ans.append(w)
print(*ans)

算法及复杂度

  • 算法:枚举。
  • 时间复杂度:
  • 空间复杂度:
全部评论

相关推荐

嗷佛快来快来快快快来:我当时就是听了别人的谣言,环境的大变,左右摇摆不定,到最后一事无成。我也给你提不了什么有效的建议,因为我自己就是败犬。但是我确实是从cpp转到了Java,cpp也做过项目,了解过具体的细分方向。如果你感兴趣,不会拦你。因为只要一件事情能坚持下去 就会发光
点赞 评论 收藏
分享
冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务