【作业解答】第三次上机作业解题报告

这次只用了最几本的三个测试数据:

测试一:

4 4 2
1 1 1
3 3 3

4 4 1
2 2 1

测试二:

3 3 3
1 1 10
3 1 -1
3 2 1

3 3 4
1 1 1
2 3 -1
3 1 1
3 3 -3

测试三:

5 5 6
1 2 5
1 5 6
2 5 6
4 2 7
4 5 8
5 3 6

5 5 11
1 2 5
1 4 7
1 5 9
2 4 7
2 5 9
3 1 6
3 4 8
3 5 8
4 1 7
4 2 12
5 4 67

标程如下:

#include <iostream>
#include <cstdio>
#include <iomanip>  //setw函数头文件
using namespace std;
class term
{
public:
    int row,col;
	int value;
};
 
class SeqTriple
{
public:
	SeqTriple(int msize = 1000);
	~SeqTriple(){delete []trip;}
	void transpose(SeqTriple &b)const;
	void append(const term &t1);
	void add(const SeqTriple &b,SeqTriple &c)const;
	void sub(const SeqTriple &b,SeqTriple &c)const;
    void mul(SeqTriple a,SeqTriple b,SeqTriple &c)const;
	friend ostream & operator <<(ostream & out,const SeqTriple &x);
	friend istream & operator >>(istream & in,SeqTriple &x);
	int m,n;
	int t;
	term *trip;
	int maxsize;
};

SeqTriple mat1, mat2, matsum, matsub, mattra, matmul;

SeqTriple::SeqTriple(int msize)
{
	if(msize<1)
	{
		cout<<"you must make mistakes !"<<endl;
	}
	maxsize=msize;
	trip=new term[maxsize];
	t=m=n;
	t++;
}


void SeqTriple::transpose(SeqTriple& B)const    
{                                                
    int *num=new int[n];  int *k=new int[n];     
	B.m=n; B.n=m; B.t=t;                    
	if (t>1){ 
		for (int i=1; i<=n; i++) num[i]=0;  
		for (int i=1; i<=t; i++) num[trip[i].col]++; 
		k[1]=0; 
		for(int i=2; i<=n; i++) k[i]=k[i-1]+num[i-1]; 
		for(int i=1; i<=t; i++) {                    
			int j=k[trip[i].col]++;    
			j++;
			B.trip[j].row=trip[i].col;          
			B.trip[j].col=trip[i].row;
			B.trip[j].value=trip[i].value;
		}
	}
	delete [] num;  delete [] k;
}


void SeqTriple::append(const term &t1)
{
	trip[t]=t1;
	t++;
}

void SeqTriple::add(const SeqTriple &b,SeqTriple &c)const
{
	if(m!=b.m||n!=b.n)
	{
        cout<<"you must make mistakes !"<<endl;
		exit(1);
	}
	c.m=m;
	c.n=n;
	c.t=1;
	int ct=1,cb=1;
	while(ct<t&&cb<b.t)
	{
		int indt=trip[ct].row*n+trip[ct].col;
		int indb=b.trip[cb].row*n+b.trip[cb].col;
		if(indt<indb)
		{
			c.append(trip[ct]);
			ct++;
		}
		else
		{
			if(indt==indb)
			{
				if(trip[ct].value+b.trip[cb].value)
				{
					term t3;
					t3.row=trip[ct].row;
					t3.col=trip[ct].col;
					t3.value=trip[ct].value+b.trip[cb].value;
					c.append(t3);
				}
				ct++;
				cb++;
			}
			else
			{
				c.append(b.trip[cb]);
				cb++;
			}
		}
	}
	for(;ct<=t;ct++)
		c.append(trip[ct]);
	for(;cb<=b.t;cb++)
		c.append(b.trip[cb]);
	c.t--;
}

void SeqTriple::sub(const SeqTriple &b,SeqTriple &c)const
{
	if(m!=b.m||n!=b.n)
	{
        cout<<"you must make mistakes !"<<endl;
		exit(1);
	}
	c.m=m;
	c.n=n;
	c.t=1;
	int ct=1,cb=1;
	while(ct<t&&cb<b.t)
	{
		int indt=trip[ct].row*n+trip[ct].col;
		int indb=b.trip[cb].row*n+b.trip[cb].col;
		if(indt<indb)
		{
			c.append(trip[ct]);
			ct++;
		}
		else
		{
			if(indt==indb)
			{
				if(trip[ct].value-b.trip[cb].value)
				{
					term t3;
					t3.row=trip[ct].row;
					t3.col=trip[ct].col;
					t3.value=trip[ct].value-b.trip[cb].value;
					c.append(t3);
				}
				ct++;
				cb++;
			}
			else
			{
			term t4;
			t4.row=b.trip[cb].row;
			t4.col=b.trip[cb].col;
			t4.value=-(b.trip[cb].value);
            c.append(t4);
			cb++;
			}
		}
	}
	for(;ct<=t;ct++)
		c.append(trip[ct]);
	for(;cb<=b.t;cb++)
	{	term t5;
		t5.row=b.trip[cb].row;
		t5.col=b.trip[cb].col;
		t5.value=-(b.trip[cb].value);
        c.append(t5);
	}
	c.t--;
}

//得到T[i][j]的值
int GetValue(SeqTriple T,int i,int j)
{
 	for(int k=1;k<=T.t;k++)
	  if(T.trip[k].row==i && T.trip[k].col==j)
		 return T.trip[k].value;
	return 0;
}

void SeqTriple::mul(SeqTriple a,SeqTriple b,SeqTriple &c)const
{ 
	int sum=0, p=1;
	for(int i=1;i<=a.m;i++)
		for(int j=1;j<=b.n;j++)
		{ 
		   sum=0;
		   for(int k=1;k<=a.n;k++)
			   sum+= GetValue(a,i,k)*GetValue(b,k,j);
		   if(sum!=0)
		   { 
			  c.trip[p].row=i;
		      c.trip[p].col=j;
			  c.trip[p].value=sum;
			  p++;
		   }
		}
	c.m=a.m;
	c.n=b.n;
	c.t=p-1;
}

//矩阵输出,不允许修改
ostream & operator <<(ostream &out,const SeqTriple &x)
{
    out<<"rows = "<<x.m <<endl;
    cout<<"cols = "<<x.n<<endl;
    out<<"numterms = "<<x.t<<endl;
    int i,j,k,flag=1;
    for(i=1; i<=x.m; i++)
    {
        cout<<"|"<<setw(6);
        for(j=1; j<=x.n; j++)
        {
            for(k=1; k<=x.t; k++)
                if(i==x.trip[k].row&&j==x.trip[k].col)
                {
                    cout<<x.trip[k].value<<setw(6);
                    flag=0;
                }
            if(flag) cout<<"0"<<setw(6);
            flag=1;
        }
        cout<<"|"<<endl;
    }
    return out;
}

//矩阵输入,不允许修改
istream & operator >>(istream &in, SeqTriple &x)
{
	cout<<"enter number of rows,columns,and terms ! "<<endl;
    in>>x.m>>x.n>>x.t;
	if(x.t>x.maxsize)
	{
		cout<<"you must make mistakes !"<<endl;
	}
	for(int i=1;i<=x.t;i++)
	{
		cout<<"enter row,columns and value of term : "<<i<<endl;
		in>>x.trip[i].row>>x.trip[i].col>>x.trip[i].value;
	}
	return in;
}

//主函数,不允许修改
int main()
{
	freopen("in.txt","r",stdin);
	freopen("out.txt","w",stdout);
	cin>>mat1>>mat2;
	mat1.add(mat2,matsum);
	cout<<"the sum of mat1,mat2:"<<endl;
	cout<<matsum<<endl;

	mat1.sub(mat2,matsub);
	cout<<"the sub of mat1,mat2:"<<endl;
    cout<<matsub<<endl;

	cout<<"the transpose of mat1:"<<endl;
	mat1.transpose(mattra);
    cout<<mattra<<endl;

//上机作业不要求实现,所以注释掉,课后作业时把乘法实现后把相应注释去掉
    cout<<"the mul of mat1,mat3:"<<endl;
  	mat1.mul(mat1, mat2, matmul);
 	cout<<matmul<<endl;

    return 0;
}


下面是做的比较好的同学的代码:

苏航同学:

#include <iostream>
#include <fstream>
#include <cstdio>
#include <iomanip>  
using namespace std;
class term
{
public:
    int row,col;
	int value;
};

class SeqTriple
{
public:
	SeqTriple(int msize = 1000);
	~SeqTriple(){delete []trip;}
	void transpose(SeqTriple &b)const;
	void append(const term &t1);
	void add(const SeqTriple &b,SeqTriple &c)const;
	void sub(const SeqTriple &b,SeqTriple &c)const;
    void mul(SeqTriple a,SeqTriple b,SeqTriple &c)const;
	friend ostream & operator <<(ostream & out,const SeqTriple &x);
	friend istream & operator >>(istream & in,SeqTriple &x);
	int m,n;
	int t;
	term *trip;
	int maxsize;
};

SeqTriple mat1, mat2, matsum, matsub, mattra, matmul;

SeqTriple::SeqTriple(int msize)
{
	if(msize<1)
	{
		cout<<"you must make mistakes !"<<endl;
	}
	maxsize=msize;
	trip=new term[maxsize];
	t=m=n;
	t++;
}

//矩阵转置 --上机作业
void SeqTriple::transpose(SeqTriple& B)const
{
	long **array3d = new long*[this->m];
	for(int i=0;i<this->m;i++)
	{
		*(array3d+i) = new long[n];
	}
	for(int i=0;i<this->m;i++)
		for(int j=0;j<this->n;j++)
			array3d[i][j] = 0;
	for(int i=1;i<=this->t;i++)
		array3d[this->trip[i].row-1][this->trip[i].col-1] = this->trip[i].value;

		B.m = this->n;	B.n = this->m;	B.t = this->t;
		int total = 1;

	for(int j=0;j<B.m;j++)
		for(int i=0;i<B.n;i++)	
			if(array3d[i][j]!=0)
			{	
				B.trip[total].row = j+1;
				B.trip[total].col = i+1;
				B.trip[total++].value = array3d[i][j];
			}
}

//矩阵加法 --上机作业
void SeqTriple::add(const SeqTriple &b,SeqTriple &c)const
{
	long **array3d = new long*[b.m];
	for(int i=0;i<b.m;i++)
	{
		*(array3d+i) = new long[b.n];
	}
	for(int i=0;i<b.m;i++)
		for(int j=0;j<b.n;j++)
			array3d[i][j] = 0;
	for(int i=1;i<=this->t;i++)
		array3d[this->trip[i].row-1][this->trip[i].col-1] = this->trip[i].value;
	for(int i=1;i<=b.t;i++)
		array3d[b.trip[i].row-1][b.trip[i].col-1] += b.trip[i].value;
	int total = 1;
	int t_t = 0;
	for(int i=0;i<b.m;i++)	
		for(int j=0;j<b.n;j++)
			if(array3d[i][j]!=0)
				t_t++;
	c.m = b.m;	c.n = b.n;	c.t = t_t;
	for(int i=0;i<b.m;i++)	
		for(int j=0;j<b.n;j++)
			if(array3d[i][j]!=0)
			{	
				matsum.trip[total].row = i+1;
				matsum.trip[total].col = j+1;
				matsum.trip[total++].value = array3d[i][j];
			}
}




//矩阵减法 --上机作业
void SeqTriple::sub(const SeqTriple &b,SeqTriple &c)const
{
	long **array3d = new long*[b.m];
	for(int i=0;i<b.m;i++)
		*(array3d+i) = new long[b.n];
	for(int i=0;i<b.m;i++)
		for(int j=0;j<b.n;j++)
			array3d[i][j] = 0;
	for(int i=1;i<=this->t;i++)
		array3d[this->trip[i].row-1][this->trip[i].col-1] = this->trip[i].value;
	for(int i=1;i<=b.t;i++)
		array3d[b.trip[i].row-1][b.trip[i].col-1] -= b.trip[i].value;
	int total = 1;
	int t_t = 0;
	for(int i=0;i<b.m;i++)	
		for(int j=0;j<b.n;j++)
			if(array3d[i][j]!=0)
				t_t++;
	c.m = b.m;	c.n = b.n;	c.t = t_t;
	for(int i=0;i<b.m;i++)	
		for(int j=0;j<b.n;j++)
			if(array3d[i][j]!=0)
			{	
				c.trip[total].row = i+1;
				c.trip[total].col = j+1;
				c.trip[total++].value = array3d[i][j];
			}
}


void SeqTriple::mul(SeqTriple a,SeqTriple b,SeqTriple &c)const
{
	long **array3d = new long*[a.m];
	for(int i=0;i<a.m;i++)
		*(array3d+i) = new long[a.n];
	for(int i=0;i<a.m;i++)
		for(int j=0;j<a.n;j++)
			array3d[i][j] = 0;
	for(int i=1;i<=a.t;i++)
		array3d[a.trip[i].row-1][a.trip[i].col-1] = a.trip[i].value;
	long **array3d2 = new long*[b.m];
	for(int i=0;i<b.m;i++)
		*(array3d2+i) = new long[b.n];
	for(int i=0;i<b.m;i++)
		for(int j=0;j<b.n;j++)
			array3d2[i][j] = 0;
	for(int i=1;i<=b.t;i++)
		array3d2[b.trip[i].row-1][b.trip[i].col-1] = b.trip[i].value;
	long **array3d3 = new long*[a.m];
	for(int i=0;i<a.m;i++)
		*(array3d3+i) = new long[b.n];
	for(int i=0;i<a.m;i++)
		for(int j=0;j<b.n;j++)
			array3d3[i][j] = 0;
	for(int i=0;i<a.m;i++)
	{
		for(int j=0;j<b.n;j++)
		{
			int multi = 0;
			for(int w=0;w<a.n;w++)
			{
				multi += (array3d[i][w] * array3d2[w][j]);
			}
			array3d3[i][j] = multi;
		}
	}
	int oth_t = 0;
	for(int i=0;i<a.m;i++)
	{
		for(int j=0;j<b.n;j++)
		{
			if(array3d3[i][j]!=0)
				oth_t++;
		}
	}
	c.m = a.m;	c.n = b.n; c.t = oth_t;
	oth_t = 1;
	for(int i=0;i<a.m;i++)
	{
		for(int j=0;j<b.n;j++)
		{
			if(array3d3[i][j]!=0)
			{
				c.trip[oth_t].row = i+1;
				c.trip[oth_t].col = j+1;
				c.trip[oth_t++].value = array3d3[i][j];
			}
		}
	}
}

//矩阵输出,不允许修改
ostream & operator <<(ostream &out,const SeqTriple &x)
{
    out<<"rows = "<<x.m <<endl;
    out<<"cols = "<<x.n<<endl;
    out<<"numterms = "<<x.t<<endl;
    int i,j,k,flag=1;
    for(i=1; i<=x.m; i++)
    {
        cout<<"|"<<setw(6);
        for(j=1; j<=x.n; j++)
        {
            for(k=1; k<=x.t; k++)
                if(i==x.trip[k].row&&j==x.trip[k].col)
                {
                    cout<<x.trip[k].value<<setw(6);
                    flag=0;
                }
            if(flag) cout<<"0"<<setw(6);
            flag=1;
        }
        cout<<"|"<<endl;
    }
    return out;
}

//矩阵输入,不允许修改
istream & operator >>(istream &in, SeqTriple &x)
{
	cout<<"enter number of rows,columns,and terms ! "<<endl;
    in>>x.m>>x.n>>x.t;
	if(x.t>x.maxsize)
	{
		cout<<"you must make mistakes !"<<endl;
	}
	for(int i=1;i<=x.t;i++)
	{
		cout<<"enter row,columns and value of term : "<<i<<endl;
		in>>x.trip[i].row>>x.trip[i].col>>x.trip[i].value;
	}
	return in;
}

//主函数,不允许修改
int main()
{
	freopen("in.txt","r",stdin);
	freopen("out.txt","w",stdout);

	cin>>mat1>>mat2;
	mat1.add(mat2,matsum);
	cout<<"the sum of mat1,mat2:"<<endl;
	cout<<matsum<<endl;

	mat1.sub(mat2,matsub);
	cout<<"the sub of mat1,mat2:"<<endl;
    cout<<matsub<<endl;

	cout<<"the transpose of mat1:"<<endl;
	mat1.transpose(mattra);
    cout<<mattra<<endl;


    cout<<"the mul of mat1,mat3:"<<endl;
   	mat1.mul(mat1, mat2, matmul);
  	cout<<matmul<<endl;
  	
    return 0;
}


王欣培同学

#include <iostream>
#include <cstdio>
#include <iomanip>  //setw函数头文件
using namespace std;
class term
{
public:
    int row,col;
	int value;
};

class SeqTriple
{
public:
	SeqTriple(int msize = 1000);
	~SeqTriple(){delete []trip;}
	void transpose(SeqTriple &b)const;
	void append(const term &t1);
	void add(const SeqTriple &b,SeqTriple &c)const;
	void sub(const SeqTriple &b,SeqTriple &c)const;
    void mul(SeqTriple a,SeqTriple b,SeqTriple &c)const;
	friend ostream & operator <<(ostream & out,const SeqTriple &x);
	friend istream & operator >>(istream & in,SeqTriple &x);
	int m,n;
	int t;
	term *trip;
	int maxsize;
};

SeqTriple mat1, mat2, matsum, matsub, mattra, matmul;

SeqTriple::SeqTriple(int msize)
{
	if(msize<1)
	{
		cout<<"you must make mistakes !"<<endl;
	}
	maxsize=msize;
	trip=new term[maxsize];
	t=m=n;
	t++;
}

//矩阵转置 --上机作业
void SeqTriple::transpose(SeqTriple& B)const
{
    B.m=this->m;
    B.n=this->n;
    B.t=this->t;
    for(int i=1;i<=this->t;i++)
    {
        B.trip[i].row=this->trip[i].col;
        B.trip[i].col=this->trip[i].row;
        B.trip[i].value=this->trip[i].value;
    }
}

//矩阵加法 --上机作业
void SeqTriple::add(const SeqTriple &b,SeqTriple &c)const
{
    c.m=this->m;
    c.n=this->n;
    c.t=0;
    for(int i=1;i<=this->m;i++)
        for(int j=1;j<=this->n;j++)
        {
            bool bo=true;
            for(int k=1;k<=this->t;k++)
            {
                if(i==this->trip[k].row && j==this->trip[k].col)
                {
                    c.t++;
                    c.trip[c.t].row=this->trip[k].row;
                    c.trip[c.t].col=this->trip[k].col;
                    c.trip[c.t].value=this->trip[k].value;
                    bo=false;
                }
            }
            for(int l=1;l<=b.t;l++)
            {
                if(i==b.trip[l].row && j==b.trip[l].col)
                {
                    if(bo)
                    {
                        c.t++;
                        c.trip[c.t].row=b.trip[l].row;
                        c.trip[c.t].col=b.trip[l].col;
                        c.trip[c.t].value=b.trip[l].value;
                    }
                    else
                    {
                        c.trip[c.t].value+=b.trip[l].value;
                    }
                }
            }
        }
    for(int i=1;i<=c.t;i++)
    {
        if(c.trip[i].value==0)
        {
            for(int j=i;j<c.t;j++)
            {
                c.trip[j].row=c.trip[j+1].row;
                c.trip[j].col=c.trip[j+1].col;
                c.trip[j].value=c.trip[j+1].value;
            }
            c.t--;
            i--;
        }
    }
}

//矩阵减法 --上机作业
void SeqTriple::sub(const SeqTriple &b,SeqTriple &c)const
{
    c.m=this->m;
    c.n=this->n;
    c.t=0;
    for(int i=1;i<=this->m;i++)
        for(int j=1;j<=this->n;j++)
        {
            bool bo=true;
            for(int k=1;k<=this->t;k++)
            {
                if(i==this->trip[k].row && j==this->trip[k].col)
                {
                    c.t++;
                    c.trip[c.t].row=this->trip[k].row;
                    c.trip[c.t].col=this->trip[k].col;
                    c.trip[c.t].value=this->trip[k].value;
                    bo=false;
                }
            }
            for(int l=1;l<=b.t;l++)
            {
                if(i==b.trip[l].row && j==b.trip[l].col)
                {
                    if(bo)
                    {
                        c.t++;
                        c.trip[c.t].row=b.trip[l].row;
                        c.trip[c.t].col=b.trip[l].col;
                        c.trip[c.t].value=-b.trip[l].value;
                    }
                    else
                    {
                        c.trip[c.t].value-=b.trip[l].value;
                    }
                }
            }
        }
    for(int i=1;i<=c.t;i++)
    {
        if(c.trip[i].value==0)
        {
            for(int j=i;j<c.t;j++)
            {
                c.trip[j].row=c.trip[j+1].row;
                c.trip[j].col=c.trip[j+1].col;
                c.trip[j].value=c.trip[j+1].value;
            }
            c.t--;
            i--;
        }
    }
}

//矩阵乘法 ---课后作业
//上机作业不要求实现,所以注释掉,课后作业时把乘法实现后把相应注释去掉
void SeqTriple::mul(SeqTriple a,SeqTriple b,SeqTriple &c)const
{
    c.m=this->m;
    c.n=b.n;
    c.t=0;
    int sum=0;
    int A[m*n+1],B[m*n+1];
    for(int i=1;i<=m*n;i++)
    {
        A[i]=B[i]=0;
    }
    for(int i=1;i<=this->t;i++)
    {
        A[(this->trip[i].row-1)*n+this->trip[i].col]=this->trip[i].value;
    }
    for(int i=1;i<=b.t;i++)
    {
        B[(b.trip[i].col-1)*m+b.trip[i].row]=b.trip[i].value;
    }
    for(int i=1;i<=m;i++)
    {
        for(int j=1;j<=n;j++)
        {
            for(int k=1;k<=this->n;k++)
            {
                sum=sum+A[(i-1)*n+k]*B[(j-1)*m+k];
            }
            c.t++;
            c.trip[c.t].row=i;
            c.trip[c.t].col=j;
            c.trip[c.t].value=sum;
            sum=0;
        }
    }
    for(int i=1;i<=c.t;i++)
    {
        if(c.trip[i].value==0)
        {
            for(int j=i;j<c.t;j++)
            {
                c.trip[j].row=c.trip[j+1].row;
                c.trip[j].col=c.trip[j+1].col;
                c.trip[j].value=c.trip[j+1].value;
            }
            c.t--;
            i--;
        }
    }
    a.trip=new term;
    b.trip=new term;
}

//矩阵输出,不允许修改
ostream & operator <<(ostream &out,const SeqTriple &x)
{
    out<<"rows = "<<x.m <<endl;
    cout<<"cols = "<<x.n<<endl;
    out<<"numterms = "<<x.t<<endl;
    int i,j,k,flag=1;
    for(i=1; i<=x.m; i++)
    {
        cout<<"|"<<setw(6);
        for(j=1; j<=x.n; j++)
        {
            for(k=1; k<=x.t; k++)
                if(i==x.trip[k].row&&j==x.trip[k].col)
                {
                    cout<<x.trip[k].value<<setw(6);
                    flag=0;
                }
            if(flag) cout<<"0"<<setw(6);
            flag=1;
        }
        cout<<"|"<<endl;
    }
    return out;
}

//矩阵输入,不允许修改
istream & operator >>(istream &in, SeqTriple &x)
{
	cout<<"enter number of rows,columns,and terms ! "<<endl;
    in>>x.m>>x.n>>x.t;
	if(x.t>x.maxsize)
	{
		cout<<"you must make mistakes !"<<endl;
	}
	for(int i=1;i<=x.t;i++)
	{
		cout<<"enter row,columns and value of term : "<<i<<endl;
		in>>x.trip[i].row>>x.trip[i].col>>x.trip[i].value;
	}
	return in;
}

//主函数,不允许修改
int main()
{
	freopen("in.txt","r",stdin);
	freopen("out.txt","w",stdout);
	cin>>mat1>>mat2;
	mat1.add(mat2,matsum);
	cout<<"the sum of mat1,mat2:"<<endl;
	cout<<matsum<<endl;

	mat1.sub(mat2,matsub);
	cout<<"the sub of mat1,mat2:"<<endl;
    cout<<matsub<<endl;

	cout<<"the transpose of mat1:"<<endl;
	mat1.transpose(mattra);
    cout<<mattra<<endl;

//上机作业不要求实现,所以注释掉,课后作业时把乘法实现后把相应注释去掉
    cout<<"the mul of mat1,mat3:"<<endl;
  	mat1.mul(mat1, mat2, matmul);
	cout<<matmul<<endl;

    return 0;
}


此次上机做的不算很理想,只有四十几个同学有分数,其余的都是0分,希望同学们对照测试数据好好看看。。

----阿伦


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值