You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何打印格式规整的记忆化表格?集合内容致格式错乱求解

解决记忆化表格打印格式错乱的问题

目标打印格式

Weights -->
                        0       1       2       3       4       5       6
------------------------------------------------------------------------------------
            {}          0       0       0       0       0       0       0       
           {1}          0       0       0       0       0       6       6       
        {1, 2}          0       0      18      18      18      18      18       
     {1, 2, 3}          0       2      18      20      20      20      20       

问题原因

当前代码中,集合内容(如{}、{1}、{1,2})的输出没有固定宽度,不同长度的集合占用字符数不同,导致后续数字列无法对齐,出现格式错乱。

解决代码

将集合内容先拼接成完整字符串,再通过printf的固定宽度格式化输出,确保集合列占用统一宽度,后续数字列就能保持对齐:

public static void printTable(int M[][], int n, int row, int W) {
    System.out.println("\nMemoization table, Row " + row + " completed");
    System.out.println("\t\t\tWeights -->");
    for (int i = 0; i <= W; i++) {
        System.out.printf("%8d", i);
    }
    System.out.println("\n------------------------------------------------------------------------------------");
    
    for (int i = 0; i < M.length; i++) {
        // 构建集合字符串
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (i > 0) {
            for (int j = 1; j <= i; j++) {
                sb.append(j);
                if (j < i) {
                    sb.append(", ");
                }
            }
        }
        sb.append("}");
        // 固定宽度输出集合,%16s保证占16个字符宽度,可根据需求调整
        System.out.printf("%16s", sb.toString());
        
        for (int j = 0; j < M[i].length; j++) {
            System.out.printf("%8d", M[i][j]);
        }
        System.out.print("\n");
    }
}

说明

  • %16s会将集合字符串格式化为16字符宽度的内容,默认右对齐,和目标格式的列对齐方式一致;
  • 如果需要调整集合列的宽度,只需修改%16s中的数字即可,确保和目标格式的列宽匹配。

内容的提问来源于stack exchange,提问作者Nancy Drake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:00:30