鱼C论坛

 找回密码
 立即注册
查看: 2776|回复: 14

[已解决]大佬帮我看看

[复制链接]
发表于 2023-2-19 15:41:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为啥我写的不行呀?
最佳答案
2023-2-20 09:14:54
>>> a = [[]] * 10
>>> id(a[0])
139784198380928
>>> id(a[1])
139784198380928
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append(42)
>>> a
[[42], [42], [42], [42], [42], [42], [42], [42], [42], [42]]

打印杨辉三角

打印杨辉三角

我写的

我写的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-19 16:06:33 | 显示全部楼层

                               
登录/注册后可看大图
namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            const int  n = 10;
            int[,] arr = new int[n,n];
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    if (j==0)
                    {
                        arr[i,j] = 1;
                        Console.Write(arr[i,j] + "  ");
                    }
                    else if (i > j)
                    {
                        if (i==0 || j==0)
                        {
                            continue;
                        }
                        else
                        {
                            arr[i, j] = arr[(i - 1), (j - 1)] + arr[(i - 1), (j)];
                            Console.Write(arr[i, j] + "  ");
                        }
                    }
                    else if (i == j)
                    {
                        arr[i, j] = 1;
                        Console.Write(arr[i, j] + "  ");
                    }
                    else if(i < j)
                    {
                        Console.Write("  ");
                    }
                }
                Console.Write("\n");
            }

            Console.ReadKey();
        }
    }
}
用的是C#写的,大概思路是这样子的,可以参考一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-19 16:30:04 | 显示全部楼层
wuliangtdi 发表于 2023-2-19 16:06
用的是C#写的,大概思路是这样子的,可以参考一下

大哥,人家是py,而且学C#的很少吧,效率太低了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-19 16:35:54 | 显示全部楼层
wuliangtdi 发表于 2023-2-19 16:06
用的是C#写的,大概思路是这样子的,可以参考一下

谢谢你,但是看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-2-19 16:52:04 | 显示全部楼层
陈尚涵 发表于 2023-2-19 16:30
大哥,人家是py,而且学C#的很少吧,效率太低了

思路都差不多,而且我这个压根没用啥C#里的集合啥的。效率再低也不比Py差,毕竟Ryujinx使用C#写的,性能不差的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-19 17:07:54 | 显示全部楼层
陈尚涵 发表于 2023-2-19 16:30
大哥,人家是py,而且学C#的很少吧,效率太低了



                               
登录/注册后可看大图
package com.ct.Main;

import java.util.Scanner;

public class Main
{
    public static void main(String[] args)
    {
        int  n = 10;
        int[][] arr = new int[n][n];
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                if (j==0)
                {
                    arr[i][j] = 1;
//                    Console.Write(arr[i,j] + "  ");
                    System.out.print(arr[i][j] + "  ");
                }
                else if (i > j)
                {
                    if (i==0 || j==0)
                    {
                        continue;
                    }
                    else
                    {
                        arr[i][j] = arr[(i - 1)][(j - 1)] + arr[(i - 1)][(j)];
                        System.out.print(arr[i][j] + "  ");
                    }
                }
                else if (i == j)
                {
                    arr[i][j] = 1;
                    System.out.print(arr[i][j] + "  ");
                }
                else if(i < j)
                {
                    // arr[i, j] = ;
                    System.out.print("  ");
                }
            }
            System.out.print("\n");
        }

        Scanner input = new Scanner(System.in);
        input.nextInt();
    }
}
用java也基本没怎么动,稍微改改就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-19 20:40:13 | 显示全部楼层
def c(x, y):# 杨辉三角形递归函数

    if y == 1 or y == x: # y=1或y=x时,函数返回值为1

        return 1

    else:

        z = c(x-1, y-1) + c(x-1, y) # y为其他值时的递推公式

        return z

if __name__ == "__main__":

    n = int(input("请输入杨辉三角的行数:"))

    for i in range(1, n+1): # 输出n行

        for j in range(0, n-i+1):

            print("  ", end=" ")

        for j in range(1, i+1):

            # 调用递归函数,输出第i行的第j个值

            print("%6d  " %(c(i, j)), end=" ")

        print()
在网上找到的,因为作者说明要注明出处,所以这里发下网址https://www.jianshu.com/p/c086b891179a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-20 08:28:57 | 显示全部楼层
@isdkz 大佬帮帮我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 08:42:13 | 显示全部楼层

我这个不行吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-20 08:51:11 | 显示全部楼层

没仔细看,定义函数还不怎么熟,我想知道上面我写的有什么错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 08:55:30 | 显示全部楼层
酷酷的枪手 发表于 2023-2-20 08:51
没仔细看,定义函数还不怎么熟,我想知道上面我写的有什么错误

啊这。。。我也不知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 09:14:54 | 显示全部楼层    本楼为最佳答案   
>>> a = [[]] * 10
>>> id(a[0])
139784198380928
>>> id(a[1])
139784198380928
>>> a
[[], [], [], [], [], [], [], [], [], []]
>>> a[0].append(42)
>>> a
[[42], [42], [42], [42], [42], [42], [42], [42], [42], [42]]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-20 09:29:36 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-20 11:29:21 | 显示全部楼层
for j in range(i),这里j的取值有问题,i是从0开始的,j也是从0开始,当i=0时,j没有取值范围,另外range(i)也不会出现i==j的情况,改为for j in range(i+1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-20 13:59:15 | 显示全部楼层

好的谢谢你,我懂我错哪里了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 07:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表