有JAVA编写程序,左手有13张牌梅花2-A,右手13张红心2-A,洗牌右手的每张压在左手的每张上,

Python019

有JAVA编写程序,左手有13张牌梅花2-A,右手13张红心2-A,洗牌右手的每张压在左手的每张上,,第1张

代码:

package program3

/**

 * 纸牌

 * @author lina

 */

public class Card {

/**

 * boolean型,false为梅花,true为红桃

 */

private final boolean type

/**

 * int型,牌值

 */

private final int number

/**

 * 构造函数

 * @param type boolean型,false为梅花,true为红桃

 * @param number int型,牌值

 */

public Card(boolean type, int number) {

this.type = type

this.number = number

}

public String toString() {

String t = ""

String v = ""

if(!this.type) {

t = "梅花"

} else {

t = "红桃"

}

if(this.number == 1) {

v = "A"

} else if(this.number == 11) {

v = "J"

} else if(this.number == 12) {

v = "Q"

} else if(this.number == 13) {

v = "K"

} else {

v = this.number + ""

}

String back = t + v

return back

}

public boolean isType() {

return type

}

public int getNumber() {

return number

}

} package program3

/**

 * 主程序

 * @author lina

 */

public class Main {

/**

 * 构造初始卡组:

 * 0~12为左手的梅花2~A

 * 13~25为右手的红桃2~A

 */

private static Card[] create_cards() {

Card[] back = new Card[26]

for(int i = 0 i < back.length i++) {

// 为梅花

if(i / 13 == 0) {

if (i == 12) {

back[i] = new Card(false, 1)

} else {

back[i] = new Card(false, i + 2)

}

}

// 为红桃

if(i / 13 == 1) {

if(i == 25) {

back[i] = new Card(true, 1)

} else {

back[i] = new Card(true, i % 13 + 2)

}

}

}

return back

}

/**

 * 分作输出卡组

 * @param cards

 */

private static void show(Card[] cards) {

System.out.print("左手牌组:")

for(int i = 0 i <= 11 i++) {

System.out.print(cards[i] + ",")

}

System.out.print(cards[12])

System.out.println()

System.out.print("右手牌组:")

for(int i = 13 i <= 24 i++) {

System.out.print(cards[i] + ",")

}

System.out.print(cards[25])

System.out.println()

}

/**

 * 进行一次洗牌

 * @param cards Card[]型,待洗牌组

 * @return Card[]型,洗牌后的牌组

 */

private static Card[] shuffle(Card[] cards) {

Card[] back = new Card[cards.length]

for(int i = 0 i < cards.length / 2 i++) {

back[2 * i] = cards[i + 13]

back[2 * i + 1] = cards[i]

}

return back

}

public static void main(String[] args) {

Card[] cards = create_cards()

System.out.println("初始时:")

show(cards)

// int count = 0 // 洗牌次数

// do {

// count++

// cards = shuffle(cards)

// } while(cards[0].isType() || (!cards[0].isType() && cards[0].getNumber() != 2))

// System.out.println("第" + count + "次洗牌后:")

// show(cards)

       int count = 1   // 循环洗牌次数

       int realCount = count % 18 // 每洗18次牌牌组将恢复初始

        for(int i = 0 i < realCount i++) {

            cards = shuffle(cards)

        }

        System.out.println("第" + count + "轮洗牌后:")

        show(cards)

}

}

注意:每洗18次牌牌组是会复原的,因此无论洗多少次牌,我们在计算时总可以控制在洗18次之内!!!又因为牌组的大小固定为26张,则本算法的时间复杂度将为常数阶O(1),否则时间复杂度将与洗牌次数有关变为恐怖的O(n)。

我使用了一个辅助数组,因为牌组长度固定为26,因此也无所谓了,空间复杂度也是O(1)

以下是洗7次牌时的测试数据:

初始时:

左手牌组:梅花2,梅花3,梅花4,梅花5,梅花6,梅花7,梅花8,梅花9,梅花10,梅花J,梅花Q,梅花K,梅花A

右手牌组:红桃2,红桃3,红桃4,红桃5,红桃6,红桃7,红桃8,红桃9,红桃10,红桃J,红桃Q,红桃K,红桃A

第7轮洗牌后:

左手牌组:红桃J,红桃7,红桃3,梅花Q,梅花8,梅花4,红桃A,红桃10,红桃6,红桃2,梅花J,梅花7,梅花3

右手牌组:红桃K,红桃9,红桃5,梅花A,梅花10,梅花6,梅花2,红桃Q,红桃8,红桃4,梅花K,梅花9,梅花5

然后是洗18次牌时(变回初始了):

初始时:

左手牌组:梅花2,梅花3,梅花4,梅花5,梅花6,梅花7,梅花8,梅花9,梅花10,梅花J,梅花Q,梅花K,梅花A

右手牌组:红桃2,红桃3,红桃4,红桃5,红桃6,红桃7,红桃8,红桃9,红桃10,红桃J,红桃Q,红桃K,红桃A

第18轮洗牌后:

左手牌组:梅花2,梅花3,梅花4,梅花5,梅花6,梅花7,梅花8,梅花9,梅花10,梅花J,梅花Q,梅花K,梅花A

右手牌组:红桃2,红桃3,红桃4,红桃5,红桃6,红桃7,红桃8,红桃9,红桃10,红桃J,红桃Q,红桃K,红桃A

基本上我觉得你服务器要买贵点的,尤其要多核CPU ,越多越好,因为服务器占的资源多。当初我们服务器最少四核(测试用),多的到16核。所以服务器可以贵点。

然后台式机的开发的,我觉得3000多就好,集成显卡就好。配置2G内存,160G硬盘,相当好买,想买哪台就买哪台。当然挑好的一些显示器最好。因为开发一天到晚对着显示器。我就是深受其害~

OPPO 全触屏的应该是T9吧!我用的就是T9行货,你是用的JAVA运行的吗?如果不是JAVA,就直接按下关机键试试,如果QQ没退,在屏幕左上角有QQ的显示就是后台了。因为你说是高仿的,所以我也不太肯定。