Бодолт илгээх | Бүх бодолтууд | Шилдэг бодолтууд | Жагсаалт руу буцах |
RGB8054 - Төлбөр |
Нүд бүрт нь ямар нэгэн тоо бичигдсэн тэгш өнцөгт хүснэгтийн зүүн дээд нүдэнд тоглогч байрлаж байгаа. Түүнд нэг нүүдлээр эсвэл баруун, эсвэл доошоо зэргэлдээ нүдэндээ шилжихийг зөвшөөрдөг. ( Зүүн болон дээшээ шилжилтийг хориглодог) Нүднүүдээр дамжин шилжилт хийх замдаа тухайн нүдэнд байгаа тоон дүнгээр тоглогч төлбөр төлдөг. ( Түүний замын эхэн болон сүүлийн нүдэн дэх тоогоор ч бас төлбөр төлнө.) Тоглочийн баруун доод нүдэнд хүрэх замдаа төлбөр төлөх хамгийн бага дүнг тооцоол.
Input
Эхний мөрөнд хүснэгтийн хэмжээ N ба M тоонууд өгөгдөнө. (1<=N,M<=20 )
Дараагийн N мөр бүрт M тоонууд. Тухайн харгалзах нүдэн дэх төлбөрийн хэмжээ 0-оос 100 хүртэлх бүхэл тоо.
Output
Баруун доод нүд хүрэх замд төлөх хамгийн бага дүн.
Example
Input:
3 4
1 1 1 1
5 2 2 100
9 4 2 1
Output:
8
Нэмсэн: | Bataa |
Огноо: | 2010-01-28 |
Хугацааны хязгаарлалт: | 1s |
Эх кодын хэмжээний хязгаарлалт: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Програмчлалын хэлүүд: | ADA95 ASM32 ASM64 BASH BF C CSHARP C++ 4.3.2 CPP CPP14 C99 CLPS LISP sbcl LISP clisp D ERL FORTRAN HASK ICON ICK JAVA JS-RHINO LUA NEM NICE OCAML PAS-GPC PAS-FPC PERL PHP PIKE PRLG-swi PYTHON RUBY SCALA SCM guile SCM qobi ST TCL TEXT WHITESPACE |
hide comments
2024-02-07 04:07:26
#include <bits/stdc++.h> using namespace std; int main() { int n,m,a[100][100],b[100][100]; cin>>n>>m; for (int i=0;i<n;i++) for(int j=0; j<m;j++) cin>>a[i][j]; b[0][0]=a[0][0]; for (int i=1; i<n; i++) b[i][0]=b[i-1][0]+a[i][0]; for (int j=1; j<m; j++) b[0][j]=b[0][j-1]+a[0][j]; for (int i=1; i<n; i++) for (int j=1; j<m; j++) b[i][j]=min(b[i-1][j], b[i][j-1])+a[i][j]; cout << b[n-1][m-1] << endl; return 0; } huulaira boys |
|
2020-02-08 04:48:08
#include <iostream> using namespace std; int main() { int n,m,i = 0,j = 0; scanf("%d",&n); scanf("%d",&m); int a[100][100]; int e; for (i = 1; i <= n; i++) { for (j = 1; j <= m; j++) { scanf("%d",&e); a[i][j] = e; } } int b[100][100]; for (i = 1; i <= n; i++) { for (j = 1; j <= m; j++) { if (i == 1) { b[i][j] = b[i][j - 1] + a[i][j]; } else if (j == 1) { b[i][j] = b[i - 1][j] + a[i][j]; } else { if (b[i - 1][j] <= b[i][j - 1]) { b[i][j] = b[i - 1][j] + a[i][j]; } else { b[i][j] = b[i][j - 1] + a[i][j]; } } } } cout << b[n][m]; return 0; } |
|
2013-04-04 07:58:01 G.Uuganbayar BKH
Бодолтоо тавьсанд баярлалаа |
|
2013-04-04 05:42:45 temuulen
#include<stdio.h> #include<stdlib.h> int main() { int a[100][100],i,j,m,n; scanf("%d",&n); scanf("%d",&m); for(i=0;i<n;i++){for(j=0;j<m;j++) scanf("%d",&a[i][j]);} for(i=0;i<n;i++){for(j=0;j<m;j++) if(i==0 && j==0) a[i][j]=a[i][j]; else if(j==0) {a[i][j]=a[i][j]+a[i-1][j];} else if(i==0) {[j-1];} else if(a[i][j-1]>a[i-1][j]){ a[i][j]=a[i][j]+a[i-1][j];} else a[i][j]=a[i][j]+a[i][j-1];} printf("%d",a[n-1][m-1]); system("pause"); } |