N行N列表格的路径问题

一道可以用DP做的简单的题目

/**
 * Author:林万新 lwx
 * Date:  2017/11/10
 * Time: 23:16
 * 问题:
 * 给你一个n,表示n行n列的表格,然后输出从表格的左上角走到右下角一共有多少条路径?
 * 只可以向下或者向右移动
 *
 * 例子:n =1 ,f(n) =1;
 * n = 2, f(n) = 2;
 * n = 3,f(n) = 6;
 * 思路:其实就是类似于青蛙跳台阶之类的,可以利用DP做,推算出状态公式:
 * 例如:在某个DP【i】[j] = dp[i-1][j]+ dp[i][j-1]
 * 初始状态dp[0][j] = 1,dp[i][0] = 1
 */
public class Path {
    public static void main(String[] args) {
        while (true) {
            Scanner scanner = new Scanner(System.in);
            int n = scanner.nextInt();
            int dp[][] = new int[n][n];
            for (int i = 0; i < n; i++) {
                dp[0][i] = 1;
                dp[i][0] = 1;
            }
            for (int i = 1; i < n; i++)
                for (int j = 1; j < n; j++) {
                    dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
                }
            int temp = dp[n - 1][n - 1];
            System.out.println("一共有 " + temp + "条线路");
        }
    }
}
运行结果:
1
一共有 1条线路
2
一共有 2条线路
3
一共有 6条线路
4
一共有 20条线路
5
一共有 70条线路
6
一共有 252条线路
<think>根据用户需求,用户希望将MATLAB工作区中一个n4的数据保存到表格文件(如Excel)中。下面将提供几种常用方法,包括直接保存为Excel文件、文本文件(如CSV)以及使用MATLAB的表格数据类型进保存。 ### 方法1:使用`writematrix`或`writecell`函数保存为Excel文件 如果数据是数值矩阵(`matrix`)或元胞数组(`cell array`),可以使用`writematrix`或`writecell`函数直接写入Excel文件。 ```matlab % 假设数据存储在变量data中,大小为n4 % 示例数据:data = rand(10,4); % 104的随机数 % 将数据写入Excel文件 writematrix(data, 'output.xlsx'); % 如果data是数值矩阵 % 或者 writecell(data, 'output.xlsx'); % 如果data包含非数值数据(如字符串) % 可选:指定工作表名称 writematrix(data, 'output.xlsx', 'Sheet', 'Sheet1'); % 可选:写入指定范围(例如从A1单元格开始) writematrix(data, 'output.xlsx', 'Range', 'A1'); ``` ### 方法2:使用`writetable`函数保存为表格文件 如果数据是表格(`table`)类型,或者可以转换为表格,使用`writetable`函数更合适,因为它可以保留名。 ```matlab % 将矩阵转换为表格,并指定名 dataTable = array2table(data, 'VariableNames', {'Column1','Column2','Column3','Column4'}); % 写入Excel文件 writetable(dataTable, 'output.xlsx'); % 也可以写入CSV文件(文本格式,通用性更好) writetable(dataTable, 'output.csv'); ``` ### 方法3:使用`xlswrite`函数(旧版本MATLAB兼容) 对于旧版MATLAB(R2019a之前),可以使用`xlswrite`函数,但新版本推荐使用上述方法。 ```matlab % 写入Excel文件 xlswrite('output.xlsx', data); % 写入指定工作表 xlswrite('output.xlsx', data, 'Sheet1'); % 写入指定位置(从A1开始) xlswrite('output.xlsx', data, 'Sheet1', 'A1'); ``` ### 方法4:保存为CSV文件(纯文本) 如果不需要Excel格式,CSV文件更通用且易于其他程序读取。 ```matlab % 使用writematrix writematrix(data, 'output.csv'); % 或者使用dlmwrite(适用于数值矩阵) dlmwrite('output.csv', data, 'delimiter', ',', 'precision', '%.6f'); ``` ### 注意事项 1. **文件路径**:如果文件路径包含空格或特殊字符,建议使用完整路径,例如: ```matlab writematrix(data, 'C:\Users\username\Documents\output.xlsx'); ``` 2. **文件覆盖**:如果文件已存在,上述函数默认会覆盖文件。若要追加数据,需使用低级文件I/O函数,但通常直接覆盖更简单。 3. **性能**:对于非常大的数据,建议使用CSV格式,因为Excel文件写入较慢。 4. **数据类型**:确保数据为矩阵、元胞数组或表格类型。若有混合数据类型(如数值和字符串),建议使用元胞数组或表格。 ### 示例代码 以下是一个完整示例,将工作区中的随机数据(104)保存到Excel和CSV文件: ```matlab % 生成示例数据(104) data = rand(10,4); % 方法1:使用writematrix写入Excel writematrix(data, 'random_data.xlsx'); % 方法2:转换为表格并写入CSV dataTable = array2table(data, 'VariableNames', {'Col1','Col2','Col3','Col4'}); writetable(dataTable, 'random_data.csv'); ``` 执后,当前工作目录下将生成`random_data.xlsx`和`random_data.csv`文件。 §§相关问题§§ 1. 如何在MATLAB中读取Excel文件的数据? 2. MATLAB中如何将多个矩阵保存到同一个Excel文件的不同工作表? 3. 如何避免MATLAB写入Excel时覆盖原有文件的其他工作表?</think>### MATLAB 保存 n4 数据到表格文件的方法 在 MATLAB 中将工作区中的 n×4 数据矩阵保存到表格文件(如 Excel)有以下几种常用方法: #### 方法 1:使用 `writematrix` 函数(推荐) ```matlab % 假设数据存储在变量 data 中(n×4 矩阵) writematrix(data, 'output.xlsx'); % 保存为 Excel 文件 writematrix(data, 'output.csv'); % 保存为 CSV 文件 ``` - ✅ 优点:一代码即可完成,自动处理格式 - ⚠️ 注意:默认从 A1 单元格开始写入,覆盖原有内容 #### 方法 2:使用 `writetable` 函数(带名) ```matlab % 将矩阵转换为表格并添加名 dataTable = array2table(data, ... 'VariableNames', {'1', '2', '3', '4'}); writetable(dataTable, 'output.xlsx', 'Sheet', 'DataSheet'); ``` - ✅ 优点:保留标题信息 - 📌 提示:通过 `'Sheet'` 参数指定工作表名称 #### 方法 3:循环写入多组数据(追加模式) ```matlab % 首次写入(创建文件) writematrix(data1, 'output.xlsx', 'Sheet', 'Sheet1'); % 后续追加新数据(避免覆盖) for i = 2:5 newData = rand(10,4); % 新生成的 n×4 数据 writecell(newData, 'output.xlsx', ... 'Sheet', 'Sheet1', ... 'Range', ['A' num2str((i-1)*10+1)]); % 动态计算起始位置 end ``` - ✅ 适用场景:分批生成数据时避免覆盖原有内容 - 📌 关键:使用 `'Range'` 参数精确定位写入位置 #### 方法 4:使用 `xlswrite`(兼容旧版本) ```matlab xlswrite('output.xlsx', data, 'Sheet1', 'A1'); % 参数说明:文件名, 数据, 工作表名, 起始位置 ``` ### 注意事项 1. **文件路径**:建议使用完整路径(如 `'C:\data\output.xlsx'`),避免因工作目录变化导致错误 2. **数据类型**: - 纯数值矩阵 → `writematrix` - 混合类型数据(含文本) → `writecell` 或 `writetable` 3. **性能优化**: ```matlab % 禁用自动保存格式检测可加速写入 writematrix(data, 'output.xlsx', 'AutoFitWidth', false); ``` 4. **避免覆盖**:追加数据时务必指定 `Range` 参数,否则会清空整个工作表[^1][^3] ### 完整示例 ```matlab % 生成示例数据(100×4随机矩阵) data = rand(100,4); % 添加名 colNames = {'温度', '压力', '流速', '浓度'}; % 转换为表格 dataTable = array2table(data, 'VariableNames', colNames); % 保存到Excel(带名) writetable(dataTable, '实验数据.xlsx', 'Sheet', '2023数据'); % 验证:读取刚保存的数据 [~, ~, raw] = xlsread('实验数据.xlsx', '2023数据'); disp('前5数据:'); disp(raw(1:6,:)); % 显示标题+前5数据 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值