낙곡P1164 작은 A 주문(dp)
1785 단어 dp
제목 배경
uim
신번은 uoi
의ra
(라듐표)를 받자마자 기우 A
를 끌고 식당에 갔어요. 아주 낮은 거요.uim
벽에 있는 가격표(너무 저급해서 메뉴가 없어)를 가리키며 "마음대로 시키세요."라고 말했다.제목 설명
그러나
uim
약간 (e) (ro)
샀기 때문에주머니에는MM위안(M\le10000)(M≤10000)만 남았다.식당은 비록 저급하지만 메뉴의 종류는 적지 않다. NN종(N\le 100)(N≤100), 제ii종은 aiai원(a i\le 1000)(ai ≤ 1000).아주 낮은 식당이기 때문에 종류별로 1인분만 있습니다.
A
'돈을 다 먹지 않으면 그만두지 않는다'고 봉행하기 때문에 그는 주문을 하면 꼭 맞을 것이다uim
몸에 있는 모든 돈을 다 쓴다.그는 몇 가지 주문 방법이 있는지 알고 싶어 한다. A
배가 너무 고파서 최대 11초만 기다려야 한다.입력 출력 형식
입력 형식:
첫 번째 행은 NN과 MM을 나타내는 두 개의 숫자입니다.
두 번째 줄부터 NN개의 정수 aiai.
출력 형식:
주문 방안의 수를 표시하는 정수로 답안의 범위가 intint 안에 있음을 보증합니다.
출력 샘플 가져오기
샘플 입력 #1: 복사
4 4
1 1 2 2
출력 예제 #1: 복사
3
문제풀이 사고방식: 01배낭에 가득 채울 수 있는 문제풀이, dp[0]=1과 비교하면 현재 요리는 주문하거나 주문하지 않을 수 있기 때문에 안쪽의 순환은 역순입니다.
현재 가방의 용량은 jdp[j]입니다. 용량이 j인 가방은 몇 가지 방법이 있습니다.할 수 있어. 전이 방정식으로.
#include
#include
#include
#include
using namespace std;
#define rep(i,j,k) for(int i=j;i<=k;i++)
#define sca(x) scanf("%d",&x)
#define per(i,j,k) for(int i=j;i>=k;i--)
#define inf 0x3f3f3f3f
int v[105];
int dp[10005];
int main()
{
int n,m;
scanf("%d%d",&n,&m);
rep(i,1,n)
{
scanf("%d",v+i);
}
memset(dp,0,sizeof(dp));
dp[0]=1;
rep(i,1,n)
{
per(j,m,v[i])
{
if(dp[j-v[i]]>0)
{
dp[j]+=dp[j-v[i]];
}
}
}
cout<
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【경쟁 프로 전형적인 90문】008의 해설(python)의 해설 기사입니다. 해설의 이미지를 봐도 모르는 (이해력이 부족한) 것이 많이 있었으므로, 나중에 다시 풀었을 때에 확인할 수 있도록 정리했습니다. ※순차적으로, 모든 문제의 해설 기사를 들어갈 예정입니다. 문자열...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.