【微软2014实习生及秋令营技术类职位在线測试】题目2 : K-th string
Description
Consider a string set that each of them consists of {0, 1} only. All strings in the set have the same number of 0s and 1s. Write a program to find and output the K-th string according to the dictionary order. If such a string doesn’t exist, or the input
is not valid, please output “Impossible”. For example, if we have two ‘0’s and two ‘1’s, we will have a set with 6 different strings, {0011, 0101, 0110, 1001, 1010, 1100}, and the 4th string is 1001.
Input
The first line of the input file contains a single integer t (1 ≤ t ≤ 10000), the number of test cases, followed by the input data for each test case.
Each test case is 3 integers separated by blank space: N, M(2 <= N + M <= 33 and N , M >= 0), K(1 <= K <= 1000000000). N stands for the number of ‘0’s, M stands for the number of ‘1’s, and K stands for the K-th of string in the set that needs to be printed
as output.
Output
For each case, print exactly one line. If the string exists, please print it, otherwise print “Impossible”.
例子输入
3
2 2 2
2 2 7
4 7 47
例子输出
0101
Impossible
01010111011
思路:带有反复字符的全排列问题
import java.lang.String;
import java.lang.StringBuilder;
import java.net.Inet4Address;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
public class Permutation {
static int sum ;
public static void main(String[] args)
{
int T ;
Scanner jin = new Scanner(System.in);
T = jin.nextInt();
while(T-- > 0)
{
int N, M, K;
StringBuilder stringBuilder = new StringBuilder();
N = jin.nextInt();M = jin.nextInt();K = jin.nextInt();
if (!((M+N) >= 2 && (N+M) <= 33)) {
System.out.println("Impossible");
continue;
}
if(N < 0 || M < 0)
{
System.out.println("Impossible");
continue;
}
for (int i = 0; i < N; i++) {
stringBuilder.append('0');
}
for (int i = 0; i < M; i++) {
stringBuilder.append('1');
}
sum = 0;
permutation(stringBuilder.toString().toCharArray(), 0, stringBuilder.length()-1, K);
if (sum < K) {
System.out.println("Impossible");
}
}
}
public static void permutation(char[] str, int start, int end, int K) {
if (start == end) {
sum++;
//System.out.print(sum);
//System.out.print(" ");
//System.out.print(new String(str));
//System.out.print(" ");
if (sum == K) {
System.out.println(new String(str));
return ;
}
}
else {
for (int i = start; i <= end; i++) {
if(!Isduplicated(str, start, i))
{
char tmp = str[start];
str[start] = str[i];
str[i] = tmp;
permutation(str, start+1, end, K);
tmp = str[start];
str[start] = str[i];
str[i] = tmp;
}
}
}
}
public static boolean Isduplicated(char[] ch, int start, int end) {
for (int i = start; i < end; i++) {
if (ch[i] == ch[end]) {
return true;
}
}
return false;
}
}
【微软2014实习生及秋令营技术类职位在线測试】题目2 : K-th string的更多相关文章
- 微软2014实习生及秋令营技术类职位在线测试(题目1 : String reorder)
题目1 : String reorder 时间限制:10000ms 单点时限:1000ms 内存限制:256MB Description For this question, your program ...
- 微软2014实习生招聘笔试第2题 the k-th string
Time Limit: 10000msCase Time Limit: 1000msMemory Limit: 256MB Description Consider a string set that ...
- Luogu 2018 秋令营 Test 2
T1: 题目描述 你正在使用过时的浏览器,洛谷暂不支持. 请 升级浏览器 以获得更好的体验! Bob 来到了一个 $n \times m$ 的网格中,网格里有 $k$ 个豆子,第 $i$ 个豆子位于 ...
- 微软2014校招笔试题-String reorder
Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB Description For this question, your pro ...
- 9月5日 华为2014校园招聘的机试题目_C语言版答案
手有些生了. 题目: 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串.压缩规则:1.仅压缩连续重复出现的字符.比如 ...
- 阿里巴巴2014年校园招聘(秋季招聘)在线笔试--測试研发project师
第一部分是单选题:40分钟答题时间. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveG1oMTk1NA==/font/5a6L5L2T/fontsize/ ...
- 2014年第五届蓝桥杯B组(C/C++)预赛题目及个人答案(欢迎指正)
参考:https://blog.csdn.net/qq_30076791/article/details/50573512 第3题: #include<bits/stdc++.h> usi ...
- 2014小米,百度,pptv,去哪儿笔试题目回忆
今天一共笔试了这四家,真累啊,上午10点小米,下午2点百度,下午3点PPTV,下午5点去哪儿,今天右手太酸了,打的都话了50左右,如果没面试通知,那我可亏大了 小米就三题: 1.一个数组,排序要求,所 ...
- Hua Wei 机试题目四---2014
一.计算亮灯的个数 描述:一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.…n-1.n.每盏电灯由一个拉线开关控制.开始,电灯全部关着. 有n个学生从长廊穿过.第一个学生把号 ...
随机推荐
- SQL SERVER EXPRESS 连接字符串
Microsoft SQL Server Express Edition 为生成应用程序提供了一个简单的数据库解决方案.SQL Server Express Edition 支持完整的 SQL Ser ...
- 使用 GCD 实现倒计时效果
效果如下: ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController @p ...
- 利用Laplacian变换进行图像模糊检测
检测图片是否模糊有很多方法(这篇文章review了36种),比如FFT和variation of Laplacian等,前者在操作到时候需要定义高频的量有多低和多高来区分图片是模糊的,操作起来比较麻烦 ...
- 【中间件安全】Tomcat 安全加固规范
1. 适用情况 适用于使用Tomcat进行部署的Web网站. 2. 技能要求 熟悉Tomcat配置操作,能够利用Tomcat进行建站,并能针对站点使用Tomcat进行安全加固. 3. 前置条件 1.根 ...
- [Cubieboard] 镜像资源汇总
Linaro Server 14.04 (SDCard) 下载:cb2-lubuntu-server-tsd-tfcard-v2.0.img.gz 内核:GNU/Linux 3.4.79 armv7l ...
- 转载->C#异常处理
C# 异常处理 异常是在程序执行期间出现的问题.C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零. 异常提供了一种把程序控制权从某个部分转移到另一个部分的方式.C# 异常处理时建立 ...
- 浅谈MVC、MVP、MVVM
MVC M: Model 模型——数据 (对于前台而言例如:ajax.jsonp等从后台获取数据的) V: View 视图——表现 ...
- java工具类 获取包下所有类
extends:http://blog.csdn.net/jdzms23/article/details/17550119 package com.threeti.util; import java. ...
- A - Cable master
Inhabitants of the Wonderland have decided to hold a regional programming contest. The Judging Commi ...
- 洛谷P1032 字串变换【bfs】
题目链接:https://www.luogu.org/problemnew/show/P1032 题意: 给定一个原字符串和目标字符串,以及几个字符串变换的规则. 问能否根据这几个规则在十步之内把原字 ...