相关疑难解决方法(0)

就地矩阵旋转

我发现一个有趣的问题,要求将NxN矩阵旋转90度.我在C中的递归解决方案如下.但是当我查找其他解决方案时,大多数都使用嵌套for循环来完成任务(这似乎工作正常).嵌套循环实现似乎及时运行O(n^2).

请参阅: 如何旋转二维数组?

我相信递归解决方案也会运行O( (n^2-n)/2 ),也是O(n^2)如此.我的问题是双重的.1)我的复杂性分析是否适用于递归和非递归解决方案,以及2)是否有一些高效或巧妙的方法来旋转我没有找到的矩阵?

TIA.

#include <stdio.h>
#include <stdlib.h>


int SIZE = 0;


/**
 * In-place, recursive, clockwise, 90 degree matrix rotation.
 */
static void rotate_in_place( int matrix[][SIZE], int n )
{
    if( n < 2 )
        return;


    int temp1, temp2;

    for( int i = 0; i < (n-1); i++ )
    {
        temp1 = matrix[i][n-1];
        matrix[i][n-1] = matrix[0][i];

        temp2 = matrix[n-1][n-i-1];
        matrix[n-1][n-i-1] = temp1;

        temp1 = matrix[n-i-1][0];
        matrix[n-i-1][0] = temp2; …
Run Code Online (Sandbox Code Playgroud)

c matrix

6
推荐指数
1
解决办法
5438
查看次数

旋转M*N矩阵(90度)

我该如何旋转矩阵

|3 4 5 6 8|
|5 4 3 2 6|
|3 3 7 8 9|
Run Code Online (Sandbox Code Playgroud)

|8 6 9|            
|6 2 8|
|5 3 7|
|4 4 3|
|3 5 3|
Run Code Online (Sandbox Code Playgroud)

因为我见过的所有算法都是N*N矩阵.

c# algorithm rotation matrix

6
推荐指数
1
解决办法
1万
查看次数

如何转置字符串数组

我有一个txt,包括以下格式的一些数据.

AYGA:GKA:GOROKA:GOROKA:PAPUA NEW GUINEA:06:04:54:S:145:23:30:E:5282
AYLA:LAE::LAE:PAPUA NEW GUINEA:00:00:00:U:00:00:00:U:0000
AYMD:MAG:MADANG:MADANG:PAPUA NEW GUINEA:05:12:25:S:145:47:19:E:0020
Run Code Online (Sandbox Code Playgroud)

如何分隔用冒号(":")区分的每个项目以及如何将每个部分加载到数组中,如下例所示?

var array1 = ["AYGA", "AYLA", "AYMD"]
var array2 = ["GKA", "LAE", "MAG"]
var array3 = ["GOROKA", "", "MADANG"]
var array4 = ["GOROKA", "LAE", "MADANG"]
var array5 = ["PAPUA NEW GUINEA", "PAPUA NEW GUINEA", "PAPUA NEW GUINEA"]
var array6 = ["06", "00", "05"]
var array7 = ["04", "00", "12"]
var array8 = ["54", "00", "25"]
var array9 = ["S", "U", "S"]
var array10 = ["145", "00", "145"]
var array11 = …
Run Code Online (Sandbox Code Playgroud)

string swift

6
推荐指数
1
解决办法
1810
查看次数

使用Perl PDL旋转矩阵

我想使用Perl和PDL来实现3x3矩阵的旋转(如果可能的话)

即原始矩阵

[ 1, 2, 3 ]
[ 4, 5, 6 ]
[ 7, 8, 9 ]
Run Code Online (Sandbox Code Playgroud)

我想旋转,大约5,所以它成为新的矩阵

[ 3, 6, 9 ]
[ 2, 5, 8 ]
[ 1, 4, 7 ]
Run Code Online (Sandbox Code Playgroud)

实际上这和你如何旋转二维数组相同?但我想使用Perl和PDL.

感谢您的帮助.

perl matrix pdl

5
推荐指数
2
解决办法
554
查看次数

如何将2d阵列旋转LESS超过90°,达到最佳近似值?

假设我有一个以0°旋转存储的数组:

0 0 1 0 0
0 0 1 0 0 
1 1 1 0 0 
0 0 0 0 0
0 0 0 0 0 
Run Code Online (Sandbox Code Playgroud)

如果我通过,我希望它以良好的近似值返回,例如30°作为参数,它将是这样的:

0 0 0 1 0
1 1 0 1 0
0 0 1 0 0 
0 0 0 0 0 
0 0 0 0 0 
Run Code Online (Sandbox Code Playgroud)

45°会

1 0 0 0 1
0 1 0 1 0
0 0 1 0 0 
0 0 0 0 0 
0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)

我知道90°旋转的解决方案.但我不认为这会对我有帮助吗? …

c# java algorithm

5
推荐指数
1
解决办法
157
查看次数

PHP逆时针旋转矩阵

我正在解决一个更大的问题,一步我需要逆时针旋转一个二维阵列.

所以,如果我有这个矩阵:

1 2 3 4
1 2 3 4
3 4 5 6
3 4 5 6
Run Code Online (Sandbox Code Playgroud)

轮换后它将是:

4 4 6 6
3 3 5 5
2 2 4 4
1 1 3 3
Run Code Online (Sandbox Code Playgroud)

我找到了顺时针旋转它的解决方案:

<?php    
$a = array(array(1,2,3,4),array(5,6,7,8),array(9,0,1,2),array(3,4,5,6));
$b = array(); //result

while(count($a)>0)
{
    $b[count($a[0])-1][] = array_shift($a[0]);
    if (count($a[0])==0)
    {
         array_shift($a);
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

问题是,即使a是单维或只有一个元素,它也必须工作.

所以,1 2 3 4将成为:

4
3
2
1
Run Code Online (Sandbox Code Playgroud)

php arrays matrix

3
推荐指数
1
解决办法
2487
查看次数

搜索图像模式

我需要做一个这样做的程序:给定一个图像(5*5像素),我必须搜索有多少图像存在于另一个图像中,由许多其他图像组成.也就是说,我需要搜索图像中的给定图案.

要使用的语言是C.我必须使用并行计算来搜索4个角度(0º,90º,180º和270º).

最好的方法是什么?

c parallel-processing

1
推荐指数
1
解决办法
722
查看次数

如何在 Java 中旋转二维数组

[解决了]

这个问题的标题含糊不清,但希望这能解决问题。

基本上,我正在寻找的是旋转这组数据的解决方案。此数据以特定方式设置。

以下是输入和输出的示例:

输入:

3
987
654
321
Run Code Online (Sandbox Code Playgroud)

输出:

123
456
789
Run Code Online (Sandbox Code Playgroud)

“3”表示将使用的列数和行数。如果您输入数字“4”,您将被允许输入 4 组 4 个整数。

输入:

4
4567
3456
2345
1234
Run Code Online (Sandbox Code Playgroud)

输出:

1234
2345
3456
4567
Run Code Online (Sandbox Code Playgroud)

目标是找到一种仅在需要时旋转数据的方法。您必须确保最小的角数位于左上角。例如,对于上面的代码,您旋转了它,因此 1 位于左上角。

我的问题是我不知道如何旋转数据。我只能旋转角落而不能旋转侧面。这是我的代码到目前为止所做的:

  • 获取每一行的输入并将它们转换为字符串
  • 将这些字符串拆分为单独的字符
  • 将这些字符存储在一个数组中

我只是不知道如何比较这些字符并最终旋转数据。

任何帮助,将不胜感激!任何问题都会得到解答。

问题的详细描述在这里(问题 J4)。这只是我为明年比赛分配给自己的一个挑战,所以给我答案不会“破坏”问题,而是帮助我学习。

到目前为止,这是我的代码:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    Scanner kb = new Scanner(System.in);

    int max = kb.nextInt();
    int maxSqrt = (max * max);

    int num[] = new int[max];
    String num_string[] = new String[max]; …
Run Code Online (Sandbox Code Playgroud)

java

1
推荐指数
1
解决办法
6450
查看次数

标签 统计

matrix ×4

algorithm ×2

c ×2

c# ×2

java ×2

arrays ×1

parallel-processing ×1

pdl ×1

perl ×1

php ×1

rotation ×1

string ×1

swift ×1