题目1:
一个长度为N的整数数组(N>2),找出其中相乘最大的2个数。如Arr=[1,2,3],则最大值为2X3=6,返回 2,3
只需实现一个函数,函数定义:int fun(Arr){return 相乘最大的2个数;}
题目2:
一个大小是M*N大小的白色画板P(r=255,g=255,b=255), 即M像素*N像素,每个像素由r、g、b共 3个颜色组成,每个颜色值是0~255。设计一个方法、数据结构,实现对这张白色图片绘制一些实心矩形。
函数声明大概是 draw(P, 矩形数据, 绘制颜色),支持2种输出:A:打印图片结果 B:存到文件中(不需要读取功能)
可以打印结果(打印数值即可,不要绘图api、不要绘图api、不要绘图) , PrintImg(P):
(r,g,b)(r,g,b) (r,g,b).....
(r,g,b)(r,g,b) (r,g,b).....
(r,g,b)(r,g,b) (r,g,b).....
...
存到文件中 , SaveImg(P):
f = open(filename, 'w')
f.write(P)
题目1
拉出来快速排序,找最大两个数就完事了
static void Main(string[] args)
{
int []arr={8,2,3,4,5};
fun(arr);
Console.ReadLine();
}
/// <summary>
/// 输出最大两个数
/// </summary>
/// <param name="arr"></param>
/// <returns></returns>
static int fun(int[] arr)
{
List<int> listarr = arr.ToList();
listarr.Sort((x, y) => -x.CompareTo(y));
//降序排序,当数字大于0时,则直接返回前两位
//当数字小于0时,则逆置数组,返回前两位
if (listarr[0]>=0)
{
Console.WriteLine(listarr[0] + " " + listarr[1]);
}
else
{
listarr.Reverse();
Console.WriteLine(listarr[0] + " " + listarr[1]);
}
return 1;
}
题目2
题目意思的应该是定义一个白色画板,我们把这个画板称为矩形A。绘制实心矩形,这个实心矩形称为矩形B。在矩形A里面画一个矩形B。(说白了就是在矩形里画矩形)例如画板矩形为一个4X3矩形,
那么假设矩形A为
0 0 0 0
0 0 0 0
0 0 0 0
扫描二维码关注公众号,回复:
11475710 查看本文章
在里面以(0,0)为起始位置画一个3x2矩形的结果应为
1 1 1 0
1 1 1 0
0 0 0 0
其中的数字1的位置就是每个像素点的位置,再将其转化成RGB形式即可。
//定义一个P结构体
public struct P
{
public int M;
public int N;
public Rectangle rectangle;
public Color color;
}
//创建功能枚举
public enum Function
{
A = 1, B = 2
}
public class Draw
{
public void DrawRectangle(P p, Rectangle rectangle, Color color, Function function)
{
p.rectangle = rectangle;
p.color = color;
if (function == Function.A)
{
PrintImg(p);
}
else if (function == Function.B)
{
SaveImg(p);
}
else
{
return;
}
}
#region 功能A,B具体实现
/// <summary>
/// 存储输出数据
/// </summary>
/// <param name="p"></param>
private void SaveImg(P p)
{
//默认存储在文件目录的Text.txt文本下
FileStream fs = new FileStream(@"..\..\Text.txt", FileMode.Open, FileAccess.Write);
System.IO.File.SetAttributes(@"..\..\Text.txt", FileAttributes.Hidden);
StreamWriter sr = new StreamWriter(fs);
for (int i = 0; i < p.M; i++)
{
for (int j = 0; j < p.N; j++)
{
if (i >= p.rectangle.X && i <= (p.rectangle.X + p.rectangle.Width) && j >= p.rectangle.Y && j <= (p.rectangle.Y + p.rectangle.Height))
{
sr.Write("(" + p.color.R + "," + p.color.G + "," + p.color.B + ")");
}
else
{
sr.Write("(" + Color.White.R + "," + Color.White.G + "," + Color.White.B + ")");
}
}
sr.Write('\n');
}
sr.Close();
fs.Close();
Console.WriteLine("写入文件成功");
}
/// <summary>
/// 输出R,G,B
/// </summary>
/// <param name="p"></param>
private void PrintImg(P p)
{
//依次循环判断画板内的元素是否落在矩阵范围
for (int i = 0; i < p.M; i++)
{
for (int j = 0; j < p.N; j++)
{
if (i >= p.rectangle.X && i <= (p.rectangle.X + p.rectangle.Width) && j >= p.rectangle.Y && j <= (p.rectangle.Y + p.rectangle.Height))
{
Console.Write("("+p.color.R+","+p.color.G+","+p.color.B+")");
}
else
{
Console.Write("(" + Color.White.R + "," + Color.White.G + "," + Color.White.B + ")");
}
}
Console.Write('\n');
}
}
#endregion
static void Main(string[] args)
{
P p = new P { M = 10, N = 10 };
Rectangle rectangle = new Rectangle(0,0,5,5);
Draw d = new Draw();
//A,B功能测试
d.DrawRectangle(p, rectangle, Color.Red, Function.A);
d.DrawRectangle(p, rectangle, Color.Red, Function.B);
Console.ReadLine();
}