>source

저는 캐릭터에게 유틸리티를 제공하는 세 가지 범주의 제품이 있는 게임을 만들고 있습니다. 캐릭터는 각 카테고리에서 일정량의 유틸리티가 필요하며, 각 캐릭터는 제품을 구매할 수 있는 금액이 제한되어 있습니다.

enum Category { Armor, Weapon, Shield, NumOfCategories, }
class Character
int[] utilityNeededInCategories= new int[(int)Category.NumOfCategories];
int money;
class Product
Category category;
int price;
int utility;

인공지능이 매장에 가면 어떤 상품을 무작위로 골라서 구매할 수 있는지 계산해야 합니다. 즉, 금액이나 조합에 관계없이 안전하게 선택할 수 있는 항목의 목록을 만들고 싶습니다. 우리가 각 제품을 얼마만큼 선택하든 가능한 나머지 제품 조합을 감당할 수 있고 각 범주에서 필요한 유틸리티를 충족할 수 있음이 보장됩니다.

우리는 카테고리에서 필요한 총 효용을 제품의 효용으로 나누어 각 제품에 필요한 최대량을 결정할 수 있습니다. 그러나 모든 다른 조합에 대해 생각하기 시작하면 더 복잡해집니다. 제품 A를 11개 구입하면 제품 B를 감당할 수 없는 반면 제품 B를 4개 구입하는 것만으로도 괜찮을 수 있습니다.

이 작업을 수행하는 효율적인 방법을 찾아야 하며, C#로 코딩하고 있으므로 재귀가 없음을 의미합니다. 또한, 저는 최고의 제품 선택을 찾는 것이 아니라 무작위로 선택할 수 있는 지도를 찾는 것입니다. 어디서부터 시작해야 할지 머리를 감는 데 어려움을 겪고 있지만 쉽게 접근할 수 있는 방법이 있을 수 있습니다.

이것은 NP-hard인 bin-packing 문제의 변형입니다. 재귀 없는 효율성: 꿈을 꾸십시오. 그리고 This Club은 실제로 이를 위한 장소가 아닙니다. 질문이 너무 광범위합니다.

Charlieface2021-10-12 14:52:28

@Charlieface 내 질문에서 이것을 덜 광범위하게 만들기 위해 더 자세한 정보를 제공할 수 있습니까? 도움이된다면 더 추가하게되어 기쁩니다. 또한 C#에서는 함수를 재귀적으로 호출하는 것을 피하고 대신 루프 안에 물건을 보관하는 것이 일반적인 지혜입니다. 그게 어떻게 문제인지는 잘 모르겠는데, 제가 놓치고 있는 게 있을 수도 있어요. 감사 해요!

Michael2021-10-12 15:05:04
  • 이전 Flask-SQLAlchemy를 사용하여 AWS RDS MySQL 데이터베이스 인스턴스에 연결
  • 다음 Powershell은 중복 항목 없이 2개의 XML 파일을 새 파일에 병합합니다.