← Playground

Create BD_Reparatie_tevi_Greedy

dd66c7602867bded5772a8e1bcde29f9eef9e94f · darakna · Jan 17, 2016 00:25

+68 · 1 file changed

  • BD_Reparatie_tevi_Greedy +68 −0
diff --git a/BD_Reparatie_tevi_Greedy b/BD_Reparatie_tevi_Greedy
new file mode 100644
index 0000000..24f7606
--- /dev/null
+++ b/BD_Reparatie_tevi_Greedy
@@ -0,0 +1,68 @@
+#include<iostream>
+#include<fstream>
+using namespace std;
+
+/* continut fisier in.txt:
+11 22
+1 5 8 4 3 6 8 9 7 10 5
+*/
+int sum=0;
+void sort(int *v,int nr)
+{
+	int i=1;
+	while(i<nr)
+	{
+		if(v[i]>v[i+1])
+		{
+
+			int tmp=v[i+1];
+			v[i+1]=v[i];
+			v[i]=tmp;
+			i=1;
+		}
+		i++;
+	}
+}
+int reparatie(int *v, int nr_tevi,int distanta)
+{
+	if(nr_tevi&&(v[nr_tevi]==distanta))
+		{
+			cout<<v[nr_tevi]<<" ";
+			sum+=v[nr_tevi];
+	}
+	else if(nr_tevi&&(distanta>v[nr_tevi]))
+		{
+			reparatie(v,nr_tevi-1,distanta-v[nr_tevi]);
+			cout<<v[nr_tevi]<<" ";
+			sum+=v[nr_tevi];
+	}
+	else if(nr_tevi)reparatie(v,nr_tevi-1,distanta);
+	else return 0;
+}
+
+void main()
+{
+	int m,n,tevi[100],ir=0;
+	ifstream myReadFile;
+ myReadFile.open("in.txt");
+ myReadFile>>m>>n;//m = nr tevi, n = lungimea de reparat
+ cout<<"Nr de tevi este "<<m<<endl<<"Tevile sunt: ";
+ for(int i=1;i<=m;i++)
+ {
+	 
+		 myReadFile>>tevi[i];
+ }
+ sort(tevi,m);
+ for(int i=1;i<=m;i++)
+ {
+	 
+		 myReadFile>>tevi[i];
+		 cout<<tevi[i]<<" ";
+ }
+ cout<<endl<<"Distanta de reparat este "<<n<<" si poate fi reparata cu:"<<endl;
+ reparatie(tevi,m,n);
+ if(sum==n)cout<<endl<<"Reparatie completa"<<endl;
+ else cout<<endl<<"Reparatie incompleta! Distanta reparata "<<sum<<endl;
+ 
+ myReadFile.close();
+}