java - 帮助在切割棒问题中将 C++ 代码转换为 Java

标签 java c++

我不习惯用 Java 编写代码,因此我需要帮助以功能方式将此代码从 C++ 转换为 Java。我自己试了一下,结果一直是0,是CUTTING STICKS PROBLEM。

#include <iostream>

#define MAXINT 2147483647
#define NCUTS 50
using namespace std;


int main() {

    int len;
    int nc; 
    int arr[NCUTS+2];
    int dp[NCUTS+2][NCUTS+2];

    while((cin >> len) && (len != 0)) {
        cin >> nc;

        for(int i=0; i<nc; i++) {
            cin >> arr[i+1];
        }

        arr[0] = 0;
        nc++;
        arr[nc] = len;

        for(int i=0; i<=NCUTS+1; i++) {
            for(int j=0;j<=NCUTS+1;j++) {
                dp[i][j] = MAXINT;
            }
        }

        for(int i=0; i<=nc; i++) {
            dp[i][i] = 0;
            dp[i][i+1] = 0;
            dp[i][i+2] = arr[i+2] - arr[i];
        }

        for(int k=3; k<=nc; k++) {
            for(int i=0; i<=nc-k; i++) {
                for(int j=i+1; j<=i+k-1; j++) {
                    if((dp[i][j] + dp[j][i+k] + arr[i+k] - arr[i]) < dp[i][i+k]) {
                        dp[i][i+k] = dp[i][j] + dp[j][i+k] + arr[i+k] - arr[i];
                    }
                }
            }
        }
        cout << "The minimum cutting is "<< dp[0][nc] << "." << endl;
    }
}

最佳答案

我不会发布完整的翻译,但这里会涉及到 C++ 和 Java 之间的一些具体差异:

  • 您需要将所有内容包装在一个类中,例如 public class CuttingSticks
  • #define NAME value 替换为 private static final,例如,private static final int NAME = value;
  • MAXINT 只是 Integer.MAX_VALUE
  • main 必须定义为 public static void main(String[] args),即使您不使用 args
  • 您不能使用固定大小的数组。你必须分配它们。例如,int[] arr = new int[NCUTS+2]。没有二维数组,只有“数组的数组”(您需要分配外部数组,然后为每个内部数组分配另一个数组)。或者,手动编写您自己的矩形阵列。
  • 使用 System.in 而不是 cin。这是 InputStream .
  • 使用 System.out 而不是 cout。这是 PrintStream -- 通常您只使用 System.out.println

关于java - 帮助在切割棒问题中将 C++ 代码转换为 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6405639/

相关文章:

c++ - 编译器如何检测内存损坏

C++ 计数时间克服 clock_t 的 72 分钟范围

C++如何使用指针将 vector 的值相乘?

c++ - 尝试在多集中插入元素时发生C++ 11编译错误

java - JAVA程序根据出生日期和当前日期计算人的年龄

Java:使用CardLayout时如何完整显示卡片JPanel

C++:使用 LSD 基数排序崩溃的字符串排序

java - Java中线程安全队列和 "master/worker"程序的模式/原则

java - 我们可以使用java中的ResultSet getShort方法获取null值吗

java - List 是将日期与假期集合进行比较的最佳集合方法吗?