creatArray
时间: 2023-08-08 14:12:41 浏览: 42
我不清楚您指的是哪个函数或程序,但是通常创建一个数组可以用以下语法:
```java
DataType[] arrayName = new DataType[arrayLength];
```
其中,`DataType`代表数组中元素的数据类型,`arrayName`是数组的名称,`arrayLength`是数组的长度。例如,创建一个长度为5的整型数组可以这样写:
```java
int[] intArray = new int[5];
```
这将创建一个名为`intArray`的整型数组,其长度为5。您也可以使用赋值语句为数组元素赋初值,例如:
```java
int[] intArray = {1, 2, 3, 4, 5};
```
这将创建一个长度为5的整型数组,并将其元素初始化为1、2、3、4、5。
相关问题
public class Bahuang { public static void main(String[] args) { Recursion05 r = new Recursion05(); int[] board=new int[8]; r.eightQueens(board,0); System.out.println("一共"+r.count+"种"); } } class Recursion05 { int count = 0; public void eightQueens(int[] board, int i) { if (verify(board, 7)) { count++; System.out.println("第" + count + "种情况"); print(creatArray(board)); } else { for (int j = 0; j < 8; j++) { board[i] = j; if (verify(board, i)) { eightQueens(board, i + 1); } } } } public boolean verify(int[] array, int n) { for (int i = 0; i < n; i++) { if ((Math.abs(i - n) == Math.abs(array[i] - array[n])) || array[i] == array[n]) { return false; } } return true; } public char[][] creatArray(int[] array) { char[][] ret = new char[array.length][array.length]; for (int i = 0; i < array.length; i++) { for (int j = 0; j < array.length; j++) { if (array[i] == j) { ret[i][j] = 'Q'; } else { ret[i][j] = '*'; } } } return ret; } public void print(char[][] array) { for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { System.out.print(array[i][j] + " "); } System.out.println(); } } }
这段代码是一个八皇后问题的解法。八皇后问题是一个经典的回溯算法问题,目标是在一个 8x8 的棋盘上放置 8 个皇后,使得它们互相之间不能攻击到对方。
代码中的 `Bahuang` 类是程序的入口点,通过创建 `Recursion05` 对象来解决八皇后问题。`eightQueens` 方法使用递归来尝试在每一行放置皇后,并进行验证。如果成功找到一种解决方案,则计数器 `count` 加一,并打印出当前解决方案。
`verify` 方法用于验证当前放置的皇后是否与之前放置的皇后冲突。它会检查是否存在同一列、同一对角线上已经存在皇后。
`creatArray` 方法用于将皇后的位置转换为字符数组,以便打印出当前解决方案。
`print` 方法用于打印字符数组表示的棋盘。
整个逻辑是通过递归和回溯来搜索所有可能的解决方案,并输出最终的结果。
Function: Creat an undirected graph Args: *G: Pointer to a gragh *ver: An array of vertex value *edge: An array of edges Description: Construct a graph which is stored in the form of an adjacency list */ void creatGraph(Graph* G, VertexType ver[], VertexType edge[][2]) { }
好的,下面是 `creatGraph` 函数的代码实现:
```c++
void creatGraph(Graph* G, VertexType ver[], VertexType edge[][2]) {
int i, j, k;
ArcNode* p;
for (i = 0; i < MAX_VERTEX_NUM; i++) {
G->adjList[i].firstArc = NULL;
}
G->numVertexes = sizeof(ver) / sizeof(VertexType);
G->numEdges = sizeof(edge) / sizeof(VertexType) / 2;
for (i = 0; i < G->numVertexes; i++) {
G->adjList[i].data = ver[i];
}
for (k = 0; k < G->numEdges; k++) {
i = LocateVertex(G, edge[k][0]);
j = LocateVertex(G, edge[k][1]);
p = (ArcNode*)malloc(sizeof(ArcNode));
p->adjvex = j;
p->nextArc = G->adjList[i].firstArc;
G->adjList[i].firstArc = p;
p = (ArcNode*)malloc(sizeof(ArcNode));
p->adjvex = i;
p->nextArc = G->adjList[j].firstArc;
G->adjList[j].firstArc = p;
}
}
```
其中,`LocateVertex` 函数用于查找顶点在邻接表中的位置,代码如下:
```c++
int LocateVertex(Graph* G, VertexType v) {
int i;
for (i = 0; i < G->numVertexes; i++) {
if (G->adjList[i].data == v) {
return i;
}
}
return -1;
}
```
需要注意的是,在这个函数中,我们假设邻接表中的顶点值不会重复。