โจทย์ · อัลกอริทึม ปานกลาง Python ·
Ways to make change
Count the ways to make amount from coins of the given distinct positive denominations, each usable any number of times. Order doesn't matter (1+2 and 2+1 are the same way). Return the count modulo 1,000,000,007. There is exactly one way to make 0. Up to 60 denominations and amounts up to 30,000.
โครงสร้างฟังก์ชัน
def coin_ways(coins: list[int], amount: int) -> int:ตัวอย่าง
coin_ways([1, 2, 5], 5) # -> 4
coin_ways([2], 3) # -> 0
coin_ways([10], 10) # -> 1พร้อม 7 การทดสอบแบบซ่อน และ 1 การทดสอบชุดข้อมูลขนาดใหญ่ ภายใต้เวลาจำกัด โดยไม่แสดงข้อมูลนำเข้า โจทย์ที่ส่งให้โมเดลเป็นภาษาอังกฤษ
อันดับ #1Mistral Devstral 2 2512แก้ผ่าน · ผ่าน 11 จาก 11 การทดสอบตอบใน 906 มิลลิวินาที · เวลาประมวลผล 345 มิลลิวินาที · $0.0003 ✓ coin_ways([1, 2, 5], 5)ค่าที่คาดหวัง 4 2 มิลลิวินาที ✓ coin_ways([2], 3)ค่าที่คาดหวัง 0 <1 มิลลิวินาที ✓ coin_ways([10], 10)ค่าที่คาดหวัง 1 <1 มิลลิวินาที ✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ 15 มิลลิวินาที⏱ 322 มิลลิวินาทีโค้ด
def coin_ways(coins: list[int], amount: int) -> int: MOD = 10**9 + 7 dp = [0] * (amount + 1) dp[0] = 1 for coin in coins: for i in range(coin, amount + 1): dp[i] = (dp[i] + dp[i - coin]) % MOD return dp[amount]อันดับ #1Qwen3 Coder Nextแก้ผ่าน · ผ่าน 11 จาก 11 การทดสอบตอบใน 2.8 วินาที · เวลาประมวลผล 352 มิลลิวินาที · $0.0002 ✓ coin_ways([1, 2, 5], 5)ค่าที่คาดหวัง 4 <1 มิลลิวินาที ✓ coin_ways([2], 3)ค่าที่คาดหวัง 0 <1 มิลลิวินาที ✓ coin_ways([10], 10)ค่าที่คาดหวัง 1 2 มิลลิวินาที ✓ 1 มิลลิวินาที✓ <1 มิลลิวินาที✓ 2 มิลลิวินาที✓ 3 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ 14 มิลลิวินาที⏱ 327 มิลลิวินาทีโค้ด
def coin_ways(coins: list[int], amount: int) -> int: MOD = 1000000007 # dp[i] = number of ways to make amount i dp = [0] * (amount + 1) dp[0] = 1 # One way to make 0: use no coins # For each coin, update dp array for all amounts >= coin for coin in coins: for i in range(coin, amount + 1): dp[i] = (dp[i] + dp[i - coin]) % MOD return dp[amount]อันดับ #1SpaceXAI Grok Build 0.1แก้ผ่าน · ผ่าน 11 จาก 11 การทดสอบตอบใน 5.4 วินาที · เวลาประมวลผล 354 มิลลิวินาที · $0.0022 ✓ coin_ways([1, 2, 5], 5)ค่าที่คาดหวัง 4 <1 มิลลิวินาที ✓ coin_ways([2], 3)ค่าที่คาดหวัง 0 <1 มิลลิวินาที ✓ coin_ways([10], 10)ค่าที่คาดหวัง 1 <1 มิลลิวินาที ✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ 1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ 14 มิลลิวินาที⏱ 334 มิลลิวินาทีโค้ด
def coin_ways(coins: list[int], amount: int) -> int: MOD = 1000000007 dp = [0] * (amount + 1) dp[0] = 1 for coin in coins: for x in range(coin, amount + 1): dp[x] = (dp[x] + dp[x - coin]) % MOD return dp[amount]อันดับ #1Anthropic Claude Haiku 5.5แก้ผ่าน · ผ่าน 11 จาก 11 การทดสอบตอบใน 1.7 วินาที · เวลาประมวลผล 355 มิลลิวินาที · $0.0002 ✓ coin_ways([1, 2, 5], 5)ค่าที่คาดหวัง 4 <1 มิลลิวินาที ✓ coin_ways([2], 3)ค่าที่คาดหวัง 0 2 มิลลิวินาที ✓ coin_ways([10], 10)ค่าที่คาดหวัง 1 <1 มิลลิวินาที ✓ <1 มิลลิวินาที✓ <1 มิลลิวินาที✓ 1 มิลลิวินาที✓ 1 มิลลิวินาที✓ 1 มิลลิวินาที✓ 1 มิลลิวินาที✓ 15 มิลลิวินาที⏱ 330 มิลลิวินาทีโค้ด
def coin_ways(coins: list[int], amount: int) -> int: MOD = 1_000_000_007 if amount < 0: return 0 dp = [0] * (amount + 1) dp[0] = 1 for c in coins: if c <= 0 or c > amount: continue for a in range(c, amount + 1): dp[a] = (dp[a] + dp[a - c]) % MOD return dp[amount] % MOD
ค่าใช้จ่ายโทเค็น: $0.0028 · วิธีจัดการแข่งขันและการคิดคะแนน →