इस उदाहरण में विभाजित संख्या? इन समूहों को लगभग एक ही आकार होना चाहिए।बराबर आकार समूहों
उदाहरण के लिए: राशि = 45; maxPerGroup = 15; राशि समूह = 3;
परिणाम: 15 15 15
मैं भाषा के रूप में सी # का उपयोग कर रहा हूँ।
अग्रिम धन्यवाद!
इस उदाहरण में विभाजित संख्या? इन समूहों को लगभग एक ही आकार होना चाहिए।बराबर आकार समूहों
उदाहरण के लिए: राशि = 45; maxPerGroup = 15; राशि समूह = 3;
परिणाम: 15 15 15
मैं भाषा के रूप में सी # का उपयोग कर रहा हूँ।
अग्रिम धन्यवाद!
नोट सटीक नहीं ग # केवल आपके विचार देने के लिए।
मुझे लगता है कि आप विभिन्न समूहों में व्याकरणिक रूप से एक संख्या को विभाजित करने का एक तरीका ढूंढ रहे हैं। यह जानने के बिना कि समूह कितने बड़े हैं और समूह की एक यादृच्छिक राशि है।
तो मान लें कि x = 30 y = 15. 30/15 = 15 के 15 समूह और मान लें x = 43 तो संख्या कैसा होना चाहिए? 14 14 15
groups (since you already have this calculated correctly)(should be a double)
// maxPerGroup = y
membersPerGroup = floor(amount/groups)
List a = new List
//Is the leftover value of the modulus
leftover = amount%groups;
//Loops for each group
for(int i=0;i<groups;i++){
//If there is a left over value
if(leftover>0){
a.Add(membersPerGroup +1);
leftover--;
}else{
a.Add(membersPerGroup);
}
}
मैं उचित सी # में लिख सकता है लेकिन ऐसा नहीं है कि आप के लिए यह
जैसा कि मैंने अपनी टिप्पणी (प्रश्न) में संकेत देने की कोशिश की - समूहों की संख्या सही ढंग से गणना नहीं की जाती है, एक पूर्णांक द्वारा पूर्णांक को विभाजित करने के परिणामस्वरूप एक पूर्णांक (सी #) होगा। उदाहरण के लिए 31 15 रिटर्न 2 और छत से विभाजित है जो आपको कहीं भी नहीं ले जाएगा .... –
यह एक डबल होना चाहिए। हो सकता है कि मैं इसे लिखने से चूक गया, तो असली सी # कोड नहीं। लेकिन यह एक दोगुना होना चाहिए और मुझे लगता है कि वह – Liquid
का उल्लेख करता है और फिर से पढ़कर मैं कुछ और गलतियों को झुकाता हूं – Liquid
number of groups := ceiling(total/max group size)
number per group := floor(total/number of groups)
rem = total % number per group
आप number per group
साथ number per group + 1
और number of groups - rem
समूहों के साथ rem
समूहों होगा।
संपादित करें: उदाहरण: 13 के साथ
total := 50
max group size := 15
number of groups := ceiling(50/15) // 4
number per group := floor(50/4) // 12
rem := 50 % 12 // 2
2 समूहों और 12.
यह मेरे कोड से स्पष्ट होना चाहिए कि स्लेश उचित विभाजन का प्रतिनिधित्व करते हैं, पूर्णांक विभाजन नहीं (अन्यथा फर्श और छत के संचालन अर्थहीन होंगे)। इसके अलावा, किसी भी विशेष डेटाटाइप का उपयोग एक कार्यान्वयन विस्तार है। –
सरल गैर अनुकूलित समाधान के साथ 2:
int i = amount;
int j = 0;
int [] groups = new int[amountGroups];
while(i > 0) {
groups[j] += 1;
i--;
j = (j+1)%amountGroups;
}
int amount = x;
int maxPerGroup = y;
int amountGroups = new int[Ceiling(amount/maxPerGroup)];
for(int i=0; i<maxPerGroup; i++)
{
if(x>maxPerGroup)
{
amountGroups[i]= maxPerGroup;
x = x-maxPerGroup;
}
else
{
amountGroups[i] = x;
x =0;
}
}
क्या यह आपको 31 के मामले में 15 15 1 नहीं देगा? – Liquid
बंटवारे के कई तरीके हैं समूहों के बीच की राशि। यह सब इस बात पर निर्भर करता है कि केवल कारक समूह की संख्या है या यदि कोई अन्य कारक हैं। देखें:
static void Main(string[] args)
{
List<int> list1 = Split1(48, 15); // result is: 15, 15, 15, 3
List<int> list2 = Split2(48, 15); // result is 12, 12, 12, 12
}
public static List<int> Split1 (int amount, int maxPerGroup)
{
int amountGroups = amount/maxPerGroup;
if (amountGroups * maxPerGroup < amount)
{
amountGroups++;
}
List<int> result = new List<int>();
for (int i = 0; i < amountGroups; i++)
{
result.Add(Math.Min(maxPerGroup, amount));
amount -= Math.Min(maxPerGroup, amount);
}
return result;
}
public static List<int> Split2 (int amount, int maxPerGroup)
{
int amountGroups = amount/maxPerGroup;
if (amountGroups * maxPerGroup < amount)
{
amountGroups++;
}
int groupsLeft = amountGroups;
List<int> result = new List<int>();
while (amount > 0)
{
int nextGroupValue = amount/groupsLeft;
if (nextGroupValue * groupsLeft < amount)
{
nextGroupValue++;
}
result.Add(nextGroupValue);
groupsLeft--;
amount -= nextGroupValue;
}
return result;
}
// For separating a collection into ranges
static List<List<T>> Split<T>(List<T> source, int size)
{
// TODO: Prepopulate with the right capacity
List<List<T>> ret = new List<List<T>>();
for (int i = 0; i < source.Count; i += size)
{
ret.Add(source.GetRange(i, Math.Min(size, source.Count - i)));
}
return ret;
}
// For separating an int into a Tuple range
static List<Tuple<int, int>> Split(int source, int size)
{
var ret = new List<Tuple<int, int>>();
for (int i = 0; i < source; i += size)
{
ret.Add(new Tuple<int, int>(i, (i + Math.Min(size, source - i))));
}
return ret;
}
आप अंकगणितीय विभाजन ऑपरेटर के लिए देख रहे उचित कोड पाया है? –
यह होमवर्क है? –
नहीं, यह होमवर्क नहीं है। मैं इसे पूरे दिन देख रहा हूं। –