“接竹竿”纸牌游戏 java实现运算结果

  1 import java.util.Scanner;
  2
  3 public class Pukepai{
  4     int[] a=new int[1000];
  5     int[] b=new int[1000];
  6     int aleft,aright,bleft,bright;
  7     int[] s=new int[100];
  8     int[] t=new int[9];
  9     int top;
 10     int flag;
 11
 12     public static void main(String[] args){
 13         Pukepai px=new Pukepai();
 14         px.go();
 15     }
 16     public void go(){
 17         getNum(a);
 18         look(a);
 19         getNum(b);
 20         look(b);
 21         aright=5;bright=5;
 22         int topp;
 23         while((aleft<aright)&&(bleft<bright)){
 24             if(s[top]==0){
 25                 s[top]=a[aleft];
 26                 t[a[aleft]]=1;
 27                 aleft++;
 28             }else{
 29                 if(t[a[aleft]]==1){
 30                     for(int j=top;j>=0;j--){
 31                         if(s[j]==a[aleft]){
 32                             flag=j;
 33                             break;
 34                         }
 35                     }
 36                     topp=top;
 37                     for(int j=flag;j<=topp;j++){
 38                             aright++;
 39                             a[aright]=s[j];
 40                             t[s[j]]=0;
 41                             s[j]=0;
 42                             if(top>0){top--;}
 43                             if(j==top){
 44                                 aright++;
 45                                 a[aright]=a[aleft];
 46                                 aleft++;
 47                             }
 48                     }
 49                 }else{
 50                     s[++top]=a[aleft];
 51                     t[a[aleft]]=1;
 52                     aleft++;
 53                 }
 54             }
 55             look(s);look(a);
 56             if(s[top]==0){
 57                 s[top]=b[bleft];
 58                 t[b[bleft]]=1;
 59                 bleft++;
 60             }else{
 61                 if(t[b[bleft]]==1){
 62                     for(int j=top;j>=0;j--){
 63                         if(s[j]==b[bleft]){
 64                             flag=j;
 65                             break;
 66                         }
 67                     }
 68                     topp=top;
 69                     for(int j=flag;j<=topp;j++){
 70                             bright++;
 71                             b[bright]=s[j];
 72                             t[s[j]]=0;
 73                             s[j]=0;
 74                             if(top>0){top--;}
 75                             if(j==top){
 76                                 bright++;
 77                                 b[bright]=b[bleft];
 78                                 bleft++;
 79                             }
 80                     }
 81                 }else{
 82                     s[++top]=b[bleft];
 83                     t[b[bleft]]=1;
 84                     bleft++;
 85                 }
 86             }
 87             look(s);
 88         }
 89     }
 90     public int[] getNum(int[] a){
 91         Scanner scanner = new Scanner(System.in);
 92         for(int i=0;i<6;i++){
 93             a[i]=scanner.nextInt();
 94         }
 95         return a;
 96     }
 97     public void look(int[] a){
 98         System.out.println("");
 99         for(int i=0;i<9;i++){
100             System.out.print(a[i]);
101         }
102     }
103 }
时间: 2024-10-11 16:00:58

“接竹竿”纸牌游戏 java实现运算结果的相关文章

翻纸牌游戏(dfs回溯)

翻纸牌游戏 Time Limit : 9000/3000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 2   Accepted Submission(s) : 2 Problem Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦的是,每当你翻一张纸牌(由正翻

HDU 2209 翻纸牌游戏(dfs)

翻纸牌游戏 Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2180    Accepted Submission(s): 787 Problem Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦的是,每当你翻一张

HDOj-2209-翻纸牌游戏-DFS

翻纸牌游戏 Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2622    Accepted Submission(s): 943 Problem Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦的是,每当你翻一

俄罗斯方块游戏 --- java

俄罗斯方块游戏 如有疑问请查看:http://zh.wikipedia.org/zh-tw/%E4%BF%84%E7%BD%97%E6%96%AF%E6%96%B9%E5%9D%97 更多疑问请参考:http://java.itcast.cn/news/b4c1f433/34fd/4a7b/96bf/f1ae5e00ce70.shtml 游戏的运行结果如下: 代码的整体目录结构如下: 游戏发生的场地是在面板(panel)上,是JFrame框架把面板圈了起来 图形具有自己本身的特征,比如说形状,颜

hdu2209翻纸牌游戏(bfs+状态压缩)

Problem Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦的是,每当你翻一张纸牌(由正翻到反,或者有反翻到正)时,他左右两张纸牌(最左边和最右边的纸牌,只会影响附近一张)也必须跟着翻动,现在给你一个乱的状态,问你能否把他们整理好,使得每张纸牌都正面朝上,如果可以,最少需要多少次操作. Input 有多个case,每个case输入一行01符号串(长度不超过20),1表

Java 位运算

一,Java 位运算 1.表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1.补码的表示需要满足如下要求. (l)正数的最高位为0,其余各位代表数值本身(二进制数). (2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1. 2.位运算符 位运算表达式由操作数和位运算符组成,实现对整数类型的二进制数进行位运算.位运算符可以分为逻辑运算符(包括~.&.|和^)及移位运算符(包括>>.<<和>>>). 1)左

HDU 2209 翻纸牌游戏(DFS)

题目链接 Problem Description 有一种纸牌游戏,很有意思,给你N张纸牌,一字排开,纸牌有正反两面,开始的纸牌可能是一种乱的状态(有些朝正,有些朝反),现在你需要整理这些纸牌.但是麻烦的是,每当你翻一张纸牌(由正翻到反,或者有反翻到正)时,他左右两张纸牌(最左边和最右边的纸牌,只会影响附近一张)也必须跟着翻动,现在给你一个乱的状态,问你能否把他们整理好,使得每张纸牌都正面朝上,如果可以,最少需要多少次操作. Input 有多个case,每个case输入一行01符号串(长度不超过2

拉米纸牌游戏开发之路学习篇2

在篇1中的Deck类中表示一副纸牌采用的是Card数组的方法,该种方法灵活性较小,在纸牌游戏中经常会用到一组纸牌的操作,在此有必要创建纸牌集合类Cards 1.通过继承集合类实现 首先介绍System.Collection空间中的ArryList类吧,该类继承了IList接口,可以动态添加或者移去元素,很好用.对之前的代码只需略加修改.具体修改如下: (1)处,需要修改Deck类的字段 //private Card[] _Cards=new Card[52]; private ArrayList

HDU2209 ( 翻纸牌游戏 )

思路:枚举然后深搜,时间复杂度有点高. 代码: 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 int a[25]; 7 char c[25]; 8 int flag; 9 int len; 10 int judge() 11 { 12 int i,j; 13 int cnt=0; 14 for