P6183 [USACO10MAR]The Rock Game S

输入输出样例
输入
3
输出
OOO
OXO
OXX
OOX
XOX
XXX
XXO
XOO
OOO

PS:

因为每一位只有两种可能,这里用01,有没有重复的,就可以把01转换成十进制,

看看有没有用过,知道找出所有

Java代码:90分还望大佬指点

import java.util.Scanner;

public class TheRockGame {
public static int n=0,max=0;;
public static int[] num;;
// public static int[][] result;;
public static boolean[] bool;;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n=sc.nextInt();
sc.close();
num = new int [n];
//一位的可能是2种,也就是2的n次方可能
max=1<<n;
bool = new boolean [max];
// result=new int [max+1][n];
bool[0]=true;
//第一种肯定全是O
for (int i = 0; i <n; i++) {
System.out.print('O');
}
System.out.println();
dfs(1);
}
public static void dfs(int step){
//如果是最后一步的话,肯定是O了
if(step==max){
for (int i = 0; i <n; i++) {
System.out.print('O');
}
System.out.println();
// outPut();
System.exit(0);
}
for (int i = 0; i < num.length; i++) {
//每一次只改一位的,因为我每一步只能进行一次操作
num[i]=num[i]==1?0:1;
int temp=toBinary();
//如果我当前的数被用过,就跳过
if(bool[temp]){
num[i]=num[i]==1?0:1;
continue;
}
//没有被用过的话,就记录用过
bool[temp]=true;
//输出此次的
for (int j = 0; j < n; j++) {
// System.out.print(num[j]==1?'X':'O');
// result[step][j]=num[j];
System.out.print(num[j]==1?'X':'O');
}
System.out.println();
//只有找到新的才能到下一步
dfs(step+1);
//用完了复原
bool[temp]=false;
num[i]=num[i]==1?0:1; }
}
// public static void outPut(){
// for (int i = 0; i <= bool.length; i++) {
// for (int j = 0; j < n; j++) {
// System.out.print(result[i][j]==1?'X':'O');
// }
// System.out.println();
//
// }
// }
//从二进制转换过来
public static int toBinary(){
int sum=0;
for (int i = 0; i <n; i++) {
sum=sum*2+num[i];
}
return sum;
}
}

Java实现 洛谷 P6183 [USACO10MAR]The Rock Game S(DFS)的更多相关文章

  1. Java实现 洛谷 P3916 图的遍历(反向DFS+记忆化搜索)

    P3916 图的遍历 输入输出样例 输入 4 3 1 2 2 4 4 3 输出 4 4 3 4 import java.io.BufferedReader; import java.io.IOExce ...

  2. Java实现 洛谷 Car的旅行路线

    输入输出样例 输入样例#1: 1 3 10 1 3 1 1 1 3 3 1 30 2 5 7 4 5 2 1 8 6 8 8 11 6 3 输出样例#1: 47.5 import java.util. ...

  3. Java实现 洛谷 P1738 洛谷的文件夹

    题目描述 kkksc03是个非凡的空想家!在短时间内他设想了大量网页,然后总是交给可怜的lzn去实现. 洛谷的网页端,有很多文件夹,文件夹还套着文件夹. 例如:/luogu/application/c ...

  4. Java实现洛谷 P1428 小鱼比可爱

    题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个"比可爱"比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只 ...

  5. 洛谷 P2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat…(树规)

    题目描述 Bessie is planning the annual Great Cow Gathering for cows all across the country and, of cours ...

  6. 【题解】洛谷P1514 [NOIP2010TG] 引水入城(DFS+DP)

    次元传送门:洛谷P1514 思路 可以证明如果有解 那么每个蓄水池可以覆盖到的干旱区必定是线段 证明: 举个栗子 8 9 8 7 9 7 6 9 6 明显到不了中间的点 如果不是连续的线段 中间肯定有 ...

  7. 【题解】洛谷P2296 [NOIP2014TG] 寻找道路(SPFA+DFS)

    题目来源:洛谷P2296 思路 一开始看还以为是一道水题 虽然本来就挺水的 本道题的难点在于如何判断是否路径上的点都会直接或者间接连着终点 我们需要在一开始多建一个反向图 然后从终点DFS回去 把路径 ...

  8. 洛谷P1242 新汉诺塔(dfs,模拟退火)

    洛谷P1242 新汉诺塔 最开始的思路是贪心地将盘子从大到小依次从初始位置移动到目标位置. 方法和基本的汉诺塔问题的方法一样,对于盘子 \(i\) ,将盘子 \(1\to i-1\) 放置到中间柱子上 ...

  9. 洛谷 P2986 [USACO10MAR]Great Cow Gat…(树形dp+容斥原理)

    P2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat… 题目描述 Bessie is planning the annual Great Cow Gathering for c ...

随机推荐

  1. MongoDB最佳安全实践

    在前文[15分钟从零开始搭建支持10w+用户的生产环境(二)]中提了一句MongoDB的安全,有小伙伴留心了,在公众号后台问.所以今天专门开个文,写一下关于MongoDB的安全. 一.我的一次Mong ...

  2. 设计模式之GOF23迭代器模式

    迭代器模式Iterator /** * 自定义迭代器接口 * @author 小帆敲代码 * */public interface MyIterator {  void first();//游标置于第 ...

  3. Semaphore和AQS

    Semaphore意思的信号量,它的作用是控制访问特定资源的线程数量 构造方法: public Semaphore(int permits) public Semaphore(int permits, ...

  4. HDU 2001 (水)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2001 题目大意:两个点求距离 解题思路: 套基本公式 a = √(b2 + c2); 小数点后几位的表 ...

  5. JS理论:编码习惯

    1.声明变量,你只会var吗?那你真的是JS小鲜肉 如果要声明3个变量,你要var 三下吗? 不用: let [a,b,c] = ['name',18,'ddd'] console.log(a,b,c ...

  6. swagger集成遇到的坑一个

    SpringBoot项目集成swagger项目遇到一个问题: 访问swagger-ui.html 没有加载到数据,也没有加载到页面的html和css资源 除了 1.添加swagger的pom依赖 2. ...

  7. pc建站自适应

    转载   来自https://www.cnblogs.com/eyed/p/7872521.html   HTML5----响应式(自适应)网页设计   现在,很多项目都需要做响应式或者自适应的来适应 ...

  8. iOS中的系统目录(Documents、tmp、Library)、RunLoop的一些知识点

    学习内容 欢迎关注我的iOS学习总结--每天学一点iOS:https://github.com/practiceqian/one-day-one-iOS-summary 实现轮播图需要注意的地方 需要 ...

  9. OpenCV开发笔记(五十六):红胖子8分钟带你深入了解多种图形拟合逼近轮廓(图文并茂+浅显易懂+程序源码)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  10. 机器学习算法及代码实现–K邻近算法

    机器学习算法及代码实现–K邻近算法 1.K邻近算法 将标注好类别的训练样本映射到X(选取的特征数)维的坐标系之中,同样将测试样本映射到X维的坐标系之中,选取距离该测试样本欧氏距离(两点间距离公式)最近 ...