当前位置:网站首页>2048项目实现
2048项目实现
2022-07-05 06:18:00 【mentalps】
1 2048
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _2048
{
public class MatrixOperation
{
// 计算矩阵的平滑性和连接性
public int[] SmoothAndNum(int[,] matrix)
{
int[,] matrixIndex = new int[5, 5];
int num = 0;
int smooth = 0;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
int[] vs1 = MatrixMove(matrix, i, j, 1, ref matrixIndex);
int[] vs2 = MatrixMove(matrix, i, j, 2, ref matrixIndex);
int[] vs3 = MatrixMove(matrix, i, j, 3, ref matrixIndex);
smooth = smooth - vs1[0] - vs2[0] - vs3[0];
num = num + vs1[1] + vs2[1] + vs3[1];
}
}
return new int[2] {
smooth, num };
}
// 穷举所有可能的填充组合
//public List<List<int>> AllComb(int max,int min,int num)
// {
// List<int> comb = new List<int>();
// return;
// }
public static int[] MatrixMove(int[,] matrix, int x, int y, int z, ref int[,] matrixIndex)
{
int num = 0;
int smooth = 0;
switch (z)
{
case 1:
if (x + 1 <= matrix.GetUpperBound(1))
{
smooth = (int)Math.Abs(Math.Log(matrix[x, y], 2) - Math.Log(matrix[x + 1, y], 2));
if (smooth == 0)
{
if (matrixIndex[x, y] == 0)
{
matrixIndex[x, y] = 1;
num = num + 1;
}
if (matrixIndex[x + 1, y] == 0)
{
matrixIndex[x + 1, y] = 1;
num = num + 1;
}
}
}
else
{
smooth = 0;
}
break;
case 2:
if ((x + 1 <= matrix.GetUpperBound(1)) && (y + 1 <= matrix.GetUpperBound(0)))
{
smooth = (int)Math.Abs(Math.Log(matrix[x, y], 2) - Math.Log(matrix[x + 1, y + 1], 2));
if (smooth == 0)
{
if (matrixIndex[x, y] == 0)
{
matrixIndex[x, y] = 1;
num = num + 1;
}
if (matrixIndex[x + 1, y + 1] == 0)
{
matrixIndex[x + 1, y + 1] = 1;
num = num + 1;
}
}
}
else
{
smooth = 0;
}
break;
case 3:
if (y + 1 <= matrix.GetUpperBound(0))
{
smooth = (int)Math.Abs(Math.Log(matrix[x, y], 2) - Math.Log(matrix[x, y + 1], 2));
if (smooth == 0)
{
if (matrixIndex[x, y] == 0)
{
matrixIndex[x, y] = 1;
num = num + 1;
}
if (matrixIndex[x, y + 1] == 0)
{
matrixIndex[x, y + 1] = 1;
num = num + 1;
}
}
}
else
{
smooth = 0;
}
break;
}
return new int[2] {
smooth, num };
}
public int[,] FillMatrix(int[,] matrix)
{
List<Tuple<int, int>> fillSteps = new List<Tuple<int, int>>();
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (matrix[i, j] == 0)
{
Tuple<int, int> pos = new Tuple<int, int>(i, j);
fillSteps.Add(pos);
}
}
}
return matrix;
}
// total:需要填充的个数
public static int [] AllComb(int total,int [] nums,int start, ref List<int []> all_list ,int [] all)
{
if (start < total) {
for (int i = 0; i < nums.Length; i++)
{
all[start] = nums[i];
AllComb(total, nums, start+1,ref all_list,all);
int[] b = new int[total];
Array.Copy(all, b, total);
all_list.Add(b);
}
return all;
}
else
{
return all;
}
}
static void Main(string[] args)
{
int[] nums = {
2, 4, 8 };
int num = 3;
List<int []> all = new List<int []>();
int[] s = new int[num];
AllComb(3, nums, 0,ref all, s);
for(int i=0;i<all.Count;i++)
{
for(int j=0;j<num;j++)
{
Console.WriteLine(all[i][j]);
}
}
}
}
}
边栏推荐
- Traditional databases are gradually "difficult to adapt", and cloud native databases stand out
- 4. Object mapping Mapster
- LVS简介【暂未完成(半成品)】
- Leetcode-6108: decrypt messages
- MySQL advanced part 1: triggers
- MySQL advanced part 2: MySQL architecture
- SQLMAP使用教程(一)
- 数据可视化图表总结(二)
- 11-gorm-v2-02-create data
- __ builtin_ Popcount() counts the number of 1s, which are commonly used in bit operations
猜你喜欢

Single chip computer engineering experience - layered idea

Appium automation test foundation - Summary of appium test environment construction

Operator priority, one catch, no doubt

Quickly use Amazon memorydb and build your own redis memory database

博弈论 AcWing 891. Nim游戏

Liunx starts redis

Appium基础 — 使用Appium的第一个Demo

Alibaba established the enterprise digital intelligence service company "Lingyang" to focus on enterprise digital growth

Overview of variable resistors - structure, operation and different applications

Traditional databases are gradually "difficult to adapt", and cloud native databases stand out
随机推荐
New title of module a of "PanYun Cup" secondary vocational network security skills competition
Sword finger offer II 058: schedule
WordPress switches the page, and the domain name changes back to the IP address
C - XOR to all (binary topic)
There are three kinds of SQL connections: internal connection, external connection and cross connection
The difference between CPU core and logical processor
MySQL advanced part 1: stored procedures and functions
[rust notes] 16 input and output (Part 1)
阿里新成员「瓴羊」正式亮相,由阿里副总裁朋新宇带队,集结多个核心部门技术团队
Leetcode backtracking method
Winter messenger 2
1040 Longest Symmetric String
Daily question 1189 Maximum number of "balloons"
Gauss Cancellation acwing 884. Solution d'un système d'équations Xor linéaires par élimination gaussienne
求组合数 AcWing 889. 满足条件的01序列
Alibaba's new member "Lingyang" officially appeared, led by Peng Xinyu, Alibaba's vice president, and assembled a number of core department technical teams
求组合数 AcWing 888. 求组合数 IV
Single chip computer engineering experience - layered idea
927. Trisection simulation
Chapter 6 relational database theory