题解 | #压缩二维码#

压缩二维码

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)

算法及复杂度

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

相关推荐

2024-12-22 19:38
已编辑
黄冈师范学院 后端
寿命齿轮:实习就一段还拉了,项目一看就不是手搓,学历也拉了,技术栈看着倒是挺好,就是不知道面试表现能咋样。 不过现在才大三,争取搞两端大厂实习,或者一个纯个人项目+一段大厂,感觉秋招还是未来可期。
投递美团等公司9个岗位
点赞 评论 收藏
分享
产品经理傅立叶:1.建议把个人信息码一下 2.简历的排版还得优化一下,看上去有点乱,另外有一个实习经历实习时间好像多写了一个; 3.实习产出要量化
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务