मैं स्वीकार करूंगा कि यह मेरा होमवर्क है। कार्य बयान में कहा गया है कि मुझे एक ऐसा प्रोग्राम लिखना है जो एक ग्राफ का एक स्थलीय आदेश पाता है जिसे मानक इनपुट द्वारा इनपुट किया जाएगा। फिर मुझे इसे प्रोफेसर के सर्वर पर वर्गीकृत करने की आवश्यकता है।मोनो (होमवर्क से संबंधित) में संकलित होने पर सी # सूची के साथ समस्या
अब यह एल्गोरिदम समस्या नहीं है। यह एक तकनीकी समस्या है। मेरे कंप्यूटर में, मैं .NET कंपाइलर (सीएससी) का उपयोग करता हूं जबकि प्रोफेसर की ग्रेडिंग मशीन मोनो के कुछ रूपों का उपयोग करती है।
यह अच्छी तरह से काम करता है, जब तक कि ग्रेडर ने मुझे 30/100 प्राप्त नहीं किया। मेरे एक दोस्त ने सुझाव दिया कि मैं ग्रेडर की "मैनुअल इनपुट सिस्टम" का उपयोग करता हूं, इसलिए मैं यहां जाता हूं, मैंने इसे आसन्न सूची के लिए सरणी-10000 सूचियां बनाई हैं।
कुछ सेकंड के बाद, ग्रेडर ने बताया कि मेरा प्रोग्राम क्रैश हो गया है।
Stacktrace:
at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0x00004>
at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0xffffffff>
at System.Exception.ToString() <0x00026>
at (wrapper runtime-invoke) object.runtime_invoke_object__this__ (object,intptr,intptr,intptr) <0xffffffff>
at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0x00004>
at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0xffffffff>
at System.Exception.ToString() <0x00026>
at (wrapper runtime-invoke) object.runtime_invoke_object__this__ (object,intptr,intptr,intptr) <0xffffffff>
at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0x00004>
at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0xffffffff>
at System.Exception.ToString() <0x00026>
at (wrapper runtime-invoke) object.runtime_invoke_object__this__ (object,intptr,intptr,intptr) <0xffffffff>
at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0x00004>
at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0xffffffff>
at System.Exception.ToString() <0x00026>
at (wrapper runtime-invoke) object.runtime_invoke_object__this__ (object,intptr,intptr,intptr) <0xffffffff>
at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0x00004>
at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0xffffffff>
at System.Exception.ToString() <0x00026>
at (wrapper runtime-invoke) object.runtime_invoke_object__this__ (object,intptr,intptr,intptr) <0xffffffff>
at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0x00004>
at (wrapper managed-to-native) object.__icall_wrapper_mono_object_new_fast (intptr) <0xffffffff>
at System.Exception.ToString() <0x00026>
at (wrapper runtime-invoke) object.runtime_invoke
यह मेरे लिए अजीब और परेशान है, लेकिन मुझे इसके लिए अभी तक कोई जवाब नहीं मिला है। फिर, इस कार्यक्रम ने मेरे पीसी पर वास्तव में ठीक काम किया।
using System;
using System.Collections;
using System.Collections.Generic;
class topo{
public static void Main(){
string[] ST = Console.ReadLine().Split(' ');
int N=Convert.ToInt32(ST[0]), M=Convert.ToInt32(ST[1]);
int[] ins = new int[N]; //node's total in-degrees
List<int>[] E = new List<int>[N];
for(int n=0;n<N;n++)
E[n] = new List<int>();
for(int m=0;m<M;m++){
ST = Console.ReadLine().Split(' ');
int u = Convert.ToInt32(ST[0]);
int v = Convert.ToInt32(ST[1]);
E[u-1].Add(v-1);
ins[v-1]++;
}
Queue S = new Queue();
List<int> L = new List<int>(); //result list
for(int n=0;n<N;n++){
//add stranded nodes directly and don't process it
if(ins[n]==0 && E[n].Count==0)
L.Add(n);
//put into queue
else if(ins[n]==0)
S.Enqueue(n);
}
while(S.Count>0){
int n = (int) S.Dequeue();
L.Add(n);
foreach(int m in E[n])
if(--ins[m]==0)
S.Enqueue(m);
}
foreach(int n in L)
Console.WriteLine(n+1);
}
}
आपको बहुत बहुत धन्यवाद, और मैं किसी भी और हर प्रतिक्रिया की सराहना करते हैं:
इस कार्यक्रम के अपने हिस्सा है।
संपादित करें: मैंने ग्रेडर के आउटपुट पर एक और नज़र डाली और यह देखने के लिए कि क्या मुझे कुछ याद आया, और वास्तव में मैंने किया। यह "syscal: 2" कहा, लेकिन मुझे इसके बारे में पता है कि "कार्यक्रम सामान्य रूप से बाहर नहीं निकला।"
संपादित करें # 2: मैंने प्रोग्राम को 5000, 10000 इत्यादि से लेकर सरणी सूची के विभिन्न आकार बनाने का प्रयास करने की कोशिश की है और 40000 के बाद "मैनुअल इनपुट सिस्टम" ने कहा कि कार्यक्रम को मिला System.OutOfMemoryException। ग्रेडर के विभिन्न हिस्सों में आगे देखने के साथ छात्रों को अनुमति दी जाती है, ऐसा लगता है कि प्रोफेसर ने अपने ग्रेडिंग पैरामीटर को गलत तरीके से कॉन्फ़िगर किया और हमें घोषणा से कम स्मृति दी। (उन्होंने कहा "32 एमबी", लेकिन कार्यक्रम लगभग 16 एमबी पर दुर्घटनाग्रस्त हो जाता है)
मैंने उसे त्रुटि की सूचना दी है और वह (अभी अभी) देख रहा है।
एक स्टैकट्रैक है, लेकिन क्या कोई वास्तविक अपवाद/त्रुटि संदेश है? –
@ मैक्सिम यह सब मुझे आउटपुट से मिला है।मैंने एक और रूप लिया और यह भी पाया: "syscal: 2" (प्रश्न में भी संपादित) – LunaticNeko
डेटा का उपयोग किया जाना चाहिए? आप पढ़ने वाले डेटा के आधार पर सरणी का उपयोग करते हैं। इतना बुरा डेटा = दुर्घटना। जब आप डेटा को पढ़ते हैं, तो आप कुछ सैनिटी चेक डाल सकते हैं, अपर्याप्त अपवादों को रोकने के लिए ... – xanatos