杨辉三角
// 杨辉三角
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> ret = new ArrayList<>();
List<Integer> list = new ArrayList<>();
list.add(1);
ret.add(list);
for (int i = 1; i < numRows; i++) {
List<Integer> curRow = new ArrayList<>();
// 第一个元素
curRow.add(1);
// 中间元素
for (int j = 1; j < i; j++) {
List<Integer> prevRow = ret.get(i-1);
int x = prevRow.get(j) + prevRow.get(j-1);
curRow.add(x);
}
// 最后一个元素
curRow.add(1);
ret.add(curRow);
}
return ret;
}
纸牌游戏
package cardgame;
/**
* @Author lenovo
* @Description J20231125
*/
public class Card {
public String suit;// 花色
public int num;// 数字
public Card(String suit, int num) {
this.suit = suit;
this.num = num;
}
@Override
public String toString() {
return suit + "" + num;
}
}
package cardgame;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* @Author lenovo
* @Description J20231125
*/
public class CardGame {
public static final String[] suits = {"♥","♠","♦","♣"};
/**
* 取得并准备一副扑克牌
* 现在假定只有 52 张牌,抛去大小王
* @return
*/
public List<Card> buyCard() {
List<Card> cardList = new ArrayList<>();
// 造一副扑克牌,每张牌有花色和数字
for (String suit : suits) {
for (int j = 1; j <= 13; j++) {
Card card = new Card(suit, j);
cardList.add(card);
}
}
return cardList;
}
/**
* 洗牌
* 随机交换
* @return
*/
public void shuffle(List<Card> cardList) {
Random random = new Random();
for (int i = cardList.size() - 1; i > 0; i--) {
int index = random.nextInt(i);
swap(cardList,i,index);
}
}
private void swap(List<Card> cardList, int i, int index) {
Card tmp = cardList.get(i);
cardList.set(i,cardList.get(index));
cardList.set(index,tmp);
}
/**
* 抓牌
* 三个人,每个人每轮抓一次,共抓五轮
* @return
*/
public List<List<Card>> getCard(List<Card> cardList) {
List<List<Card>> hand = new ArrayList<>();
List<Card> hand1 = new ArrayList<>();
List<Card> hand2 = new ArrayList<>();
List<Card> hand3 = new ArrayList<>();
hand.add(hand1);
hand.add(hand2);
hand.add(hand3);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
// 每次相当于拿走最顶上的一张牌,然后放到此时抓牌人的手上
hand.get(j).add(cardList.remove(0));// remove的返回值是对象
}
}
return hand;
}
}
package cardgame;
import java.util.ArrayList;
import java.util.List;
/**
* @Author lenovo
* @Description J20231125
*/
public class Main {
public static void main(String[] args) {
CardGame cardGame = new CardGame();
System.out.println("准备一副扑克牌");
List<Card> cardList = cardGame.buyCard();
System.out.println(cardList);
System.out.println("洗牌");
cardGame.shuffle(cardList);
System.out.println(cardList);
System.out.println("抓牌");
List<List<Card>> gameCard = cardGame.getCard(cardList);
for (int i = 0; i < gameCard.size(); i++) {
System.out.println("第 " + (i+1) + " 个抓到的牌是:" + gameCard.get(i));
}
System.out.println("剩余的牌");
System.out.println(cardList);
}
}