题目名称 | 23. [HAOI 2005]寻找编码串 |
---|---|
输入输出 | codestring.in/out |
难度等级 | ★☆ |
时间限制 | 1000 ms (1 s) |
内存限制 | 128 MiB |
测试数据 | 6 |
题目来源 | cqw 于2008-04-10加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:2, 提交:39, 通过率:5.13% | ||||
CAX_CPG | 100 | 0.063 s | 0.21 MiB | Pascal |
CAX-DY | 100 | 0.298 s | 0.19 MiB | Pascal |
CAX-DY | 83 | 0.005 s | 0.25 MiB | Pascal |
CAX_CPG | 83 | 0.073 s | 0.15 MiB | Pascal |
CAX_CPG | 83 | 0.083 s | 0.15 MiB | Pascal |
CAX-DY | 83 | 0.293 s | 0.22 MiB | Pascal |
CAX-DY | 83 | 1.002 s | 0.22 MiB | Pascal |
CAX_CPG | 83 | 1.040 s | 0.18 MiB | Pascal |
CAX-DY | 67 | 1.003 s | 0.23 MiB | Pascal |
Joel_12 | 50 | 0.061 s | 0.28 MiB | C++ |
关于 寻找编码串 的近10条评论(全部评论) | ||||
---|---|---|---|---|
freopen("area0.in","r",stdin);freopen("area0.out","w",stdout);
int ll=0; cin>>a>>b; for(int z=1;z<=a;z++) for(int y=1;y<=b;y++) cin>>u[z][y]; i(0,0); for(int z=1;z<=a;z++) for(int y=1;y<=b;y++) { if(u[z][y]=='0') ll++;} cout<<ll; }
10001
2019-06-17 19:42
4楼
| ||||
#include<bits/stdc++.h>
using namespace std; char u[102][102]; int a,b; void i(int x,int y) { u[x][y]='^'; if((u[x][y+1]=='0'||u[x][y+1]==0)&&y<=b) i(x,y+1); if((u[x+1][y]=='0'||u[x+1][y]==0)&&x<=a) i(x+1,y); if((u[x][y-1]=='0'||u[x][y-1]==0)&&y>=1) i(x,y-1); if((u[x-1][y]=='0'||u[x-1][y]==0)&&x>=1) i(x-1,y); } int main() {
10001
2019-06-17 19:42
3楼
| ||||
@CAX_CPG 大神求代码
Foenix
2014-10-15 06:10
2楼
| ||||
CAX大神求算法
digital-T
2013-04-11 09:00
1楼
|
给定 $N$ 个由 $0$ 和 $1$ 组成的编码 $S_1,S_2,…,S_n$,
寻找一个长度最短的编码串 $T$,使得 $T$ 至少可以分解出两种不同的 $S_i$ 的排列,在排列中有的编码可以不出现。
例如:$S_1=0110,S_2=00,S_3=111,S_4=001100,S_5=110$,编码串 $T=001100110,T$ 有两种不同的分解 $T=S_2+S_5+S_1,T=S_4+S_5$。
第 $1$ 行:$N$(编码的个数 $N<=20$)
第 $2 \sim N+1$行:$S_i$(第 $i$ 个编码,$S_i$ 的长度 $\leq 50$)
注意,该例子只是对库函数的使用说明,并没有算法上的意义。
第 $1$ 行:$M$(编码串的长度)
第 $2$ 行:$T$(长度最短的编码串)
若有多个长度相同且最短的编码串。则输出字典序最小的编码串。
例如:若有两种最短的编码串:$10110010100$ 和 $10001110010$,则输出 $10001110010$。
5 0110 00 111 001100 1100
6 001100
对于 $50\%$ 的数据,$N \leq 10 ,|S_i| \leq 12$;
对于 $100\%$ 的数据,$N \leq 20,|S_i| \leq 50$;