当前位置: 首页 > news >正文

php网站截图专业做二手房的网站

php网站截图,专业做二手房的网站,wordpress错误提醒,白城北京网站建设一、问题描述 题目解析 题目描述 给定一个包含 0 和 1 的二维矩阵#xff0c;一个物体从给定的初始位置出发#xff0c;在给定的速度下进行移动。遇到矩阵的边缘时会发生镜面反射。无论物体经过 0 还是 1#xff0c;都不影响其速度。请计算并给出经过 t 时间单位后#… 一、问题描述 题目解析 题目描述 给定一个包含 0 和 1 的二维矩阵一个物体从给定的初始位置出发在给定的速度下进行移动。遇到矩阵的边缘时会发生镜面反射。无论物体经过 0 还是 1都不影响其速度。请计算并给出经过 t 时间单位后物体经过 1 点的次数。 输入描述 第一行为初始信息 w h x y sx sy tw 和 h 为矩阵的宽和高。x 和 y 为起始位置。sx 和 sy 为初始速度。t 为经过的时间。 第二行开始一共 h 行为二维矩阵信息。 输出描述 输出经过 1 的个数。注意初始位置也要计算在内。 用例 输入 12 7 2 1 1 -1 13 001000010000 001000010000 001000010000 001000010000 001000010000 001000010000 001000010000输出 3说明 初始位置为 (2, 1)速度为 (1, -1)。经过 13 个时间单位后物体经过 1 的个数为 3。 题目解析 问题分析 目标 计算物体在 t 时间单位内经过 1 的点的次数。 关键点 物体在矩阵中移动遇到边缘时会发生镜面反射。每次移动的时间单位为 1不考虑小于 1 个时间单位内经过的点。初始位置如果是 1也要计算在内。 问题转化 模拟物体在矩阵中的移动过程记录经过 1 的点的次数。 解题思路 初始化 读取矩阵的宽 w 和高 h。读取初始位置 (x, y) 和速度 (sx, sy)。读取时间 t。读取矩阵数据。 模拟移动过程 对于每个时间单位更新物体的位置。如果位置超出矩阵边界则进行镜面反射并调整速度方向。检查当前位置是否为 1如果是则计数加 1。 输出结果 输出经过 1 的点的次数。 示例分析 输入 12 7 2 1 1 -1 13 001000010000 001000010000 001000010000 001000010000 001000010000 001000010000 001000010000步骤 初始化 w 12h 7。初始位置 (x, y) (2, 1)。速度 (sx, sy) (1, -1)。时间 t 13。矩阵数据001000010000 001000010000 001000010000 001000010000 001000010000 001000010000 001000010000模拟移动过程 初始位置 (2, 1) 是 1计数加 1。移动 13 个时间单位每次更新位置并检查是否为 1。经过 13 个时间单位后物体经过 1 的点的次数为 3。 输出结果3。 复杂度分析 时间复杂度 模拟移动过程的时间复杂度为 O(t)其中 t 是时间单位。总时间复杂度为 O(t)。 空间复杂度 存储矩阵数据的空间复杂度为 O(w * h)。总空间复杂度为 O(w * h)。 总结 本题的核心是通过模拟物体在矩阵中的移动过程记录经过 1 的点的次数。关键在于 处理物体在矩阵边缘的镜面反射。每次移动后检查当前位置是否为 1。时间复杂度为 O(t)适合处理 t 较小的输入。 二、JavaScript算法源码 这段 JavaScript 代码的功能是模拟一个在矩阵中“移动”的过程并根据指定的规则统计符合条件的格子数。以下是代码的逐步解析。 代码概述 输入 w、h矩阵的宽度和高度列数和行数。x、y起始位置的横坐标和纵坐标列号和行号。sx、sy水平和垂直的速度表示每次移动的步数。t模拟的最大时间步数。 矩阵 输入的矩阵由字符 0 和 1 组成其中 1 代表一个特定的目标。 目标 目标是根据给定的规则在矩阵中移动并统计遇到的 1 的个数。 逐行分析 const rl require(readline).createInterface({ input: process.stdin }); var iter rl[Symbol.asyncIterator](); const readline async () (await iter.next()).value;使用 Node.js 的 readline 模块来异步读取输入。iter 是 readline 的异步迭代器通过 readline() 获取每一行输入。 let [w, h, x, y, sx, sy, t] (await readline()).split( ).map(Number);读取输入的第一行并将其拆分成数字 w矩阵的列数。h矩阵的行数。x起始的列坐标水平坐标。y起始的行坐标纵坐标。sx水平移动步数速度。sy垂直移动步数速度。t移动的最大步数时间。 const matrix []; for (let i 0; i h; i) {matrix.push(await readline()); }初始化一个空的二维矩阵 matrix。使用 for 循环读取 h 行填充 matrix。 let ans 0;ans 用于记录遇到的 1 的数量。 while (t 0) {if (matrix[y][x] 1) {ans;}开始一个 while 循环循环次数为 t。如果当前位置的格子是 1则统计计数器 ans 加 1。 y sy;x sx;更新位置y 按照垂直方向的速度 sy 变化x 按照水平方向的速度 sx 变化。 if (x 0) {x 1;sx -sx;} else if (x w) {x w - 2;sx -sx;}检查 x列坐标是否越界 如果 x 小于 0即超出了左边界将 x 设为 1并且反转水平移动速度 sx使其向右。如果 x 超出了右边界即 x w将 x 设为 w - 2并反转水平速度 sx使其向左。 if (y 0) {y 1;sy -sy;} else if (y h) {y h - 2;sy -sy;}检查 y行坐标是否越界 如果 y 小于 0即超出了上边界将 y 设为 1并反转垂直移动速度 sy使其向下。如果 y 超出了下边界即 y h将 y 设为 h - 2并反转垂直速度 sy使其向上。 t--; }每次循环结束后减少 t表示已经消耗了一个时间步。 console.log(ans);输出统计的 1 的数量即在矩阵中遇到的目标数。 总结 问题本质 这段代码模拟了一个物体在矩阵中根据给定的规则进行移动的过程。如果当前位置是 1就增加计数器最终输出计数器的值。 坐标的变化和边界处理 通过检查坐标是否越界并反转方向的方式确保物体在矩阵中“反弹”。水平和垂直坐标的处理是独立的根据具体的方向反转速度。 边界处理 代码中明确处理了矩阵的上下左右边界一旦超出边界坐标反转。 输入输出示例 假设输入如下 5 5 0 0 1 1 10 00000 00000 00100 00000 00000w 5, h 5矩阵的大小为 5x5。x 0, y 0起始坐标是左上角。sx 1, sy 1每次水平方向和垂直方向都移动 1 步。t 10模拟 10 步。 矩阵如下 00000 00000 00100 00000 00000起始时坐标 (0, 0) 处的值是 0然后按规则向下、向右移动。每次遇到 1 统计一次。代码会输出在 10 步内遇到的 1 的个数。 三、Java算法源码 这段 Java 代码的功能与之前的 JavaScript 代码类似目的是在矩阵中模拟一个物体的移动过程并根据规则统计移动过程中经过的 1 的数量。让我们逐行分析这段代码 代码分析 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);使用 Scanner 类读取输入数据。sc 是一个 Scanner 对象用于从标准输入读取数据。 int w sc.nextInt();int h sc.nextInt();int x sc.nextInt();int y sc.nextInt();int sx sc.nextInt();int sy sc.nextInt();int t sc.nextInt();读取输入数据矩阵的宽度 w、高度 h起始位置 (x, y)每步的水平和垂直速度 sx 和 sy以及模拟的最大时间步数 t。 char[][] matrix new char[h][w];for (int i 0; i h; i) {matrix[i] sc.next().toCharArray();}初始化一个二维字符数组 matrix用于存储矩阵中的每个字符。使用循环读取矩阵的每一行并将其转换为字符数组存储在 matrix 中。 int ans 0;初始化 ans 变量用于统计遇到的 1 的数量。 while (t 0) {开始一个 while 循环直到 t 为负表示已经完成所有时间步。 if (matrix[y][x] 1) {ans;}检查当前位置的格子是否为 1如果是增加 ans。 y sy;x sx;更新当前位置 (x, y)。y 按垂直方向速度 sy 变化x 按水平方向速度 sx 变化。 if (x 0) {x 1;sx -sx;} else if (x w) {x w - 2;sx -sx;}判断水平方向的越界情况 如果 x 小于 0即超出了左边界将 x 设置为 1并反转水平方向速度 sx即使得物体向右移动。如果 x 超过了右边界即 x w将 x 设置为 w - 2并反转水平方向速度 sx即使得物体向左移动。 if (y 0) {y 1;sy -sy;} else if (y h) {y h - 2;sy -sy;}判断垂直方向的越界情况 如果 y 小于 0即超出了上边界将 y 设置为 1并反转垂直方向速度 sy即使得物体向下移动。如果 y 超过了下边界即 y h将 y 设置为 h - 2并反转垂直方向速度 sy即使得物体向上移动。 t--;}每次循环结束后减少 t表示时间步数已经消耗。 System.out.println(ans);} }输出统计结果 ans即在整个过程中遇到的 1 的数量。 总结 这段 Java 代码模拟了一个物体在一个矩阵中按给定规则移动的过程并统计经过的 1 的数量。代码中的关键步骤包括 输入处理通过 Scanner 读取矩阵的尺寸、起始坐标、速度以及最大时间步数。矩阵处理根据输入的矩阵使用二维数组 matrix 存储每个格子的值0 或 1。边界检测在每次移动后检查是否越界如果越界则反转物体的移动方向并根据规则修正坐标。统计 1 的数量在每个时间步检查当前位置是否是 1如果是则增加计数。 示例输入输出 假设输入如下 5 5 0 0 1 1 10 00000 00000 00100 00000 00000w 5, h 5矩阵的宽度和高度分别为 5 和 5。x 0, y 0起始位置为左上角。sx 1, sy 1每次水平方向和垂直方向都移动 1 步。t 10模拟 10 步。 矩阵如下 00000 00000 00100 00000 00000输出 1代码的复杂度分析 时间复杂度每次循环中更新位置、检查边界、统计 1 等操作都是常数时间操作。最坏情况下循环会执行 t 次所以时间复杂度是 O(t)。 空间复杂度存储矩阵的空间复杂度是 O(w * h)即矩阵的大小。 因此整体的时间复杂度为 O(t)空间复杂度为 O(w * h)。 四、Python算法源码 下面是对这段 Python 代码的详细注释和讲解 1. 输入部分 w, h, x, y, sx, sy, t map(int, input().split()) matrix [input() for _ in range(h)]w, h, x, y, sx, sy, t map(int, input().split()) 使用 input().split() 获取一行输入并将其按空格分割然后用 map(int, ...) 将所有值转换为整数。它们分别代表 w矩阵的列数宽度。h矩阵的行数高度。x起始列坐标水平坐标。y起始行坐标垂直坐标。sx水平移动的速度步长。sy垂直移动的速度步长。t总的时间步数模拟物体移动的步数。 matrix [input() for _ in range(h)] 这里使用列表推导式循环 h 次读取每一行矩阵并存储为字符列表。每行是一个字符串表示矩阵中的一行。例如若输入矩阵的某一行是 00100则 matrix[i] 将是这个字符串。 2. 算法部分 def getResult():global x, y, sx, sy, tans 0定义 getResult 函数其中 global x, y, sx, sy, t 表示在该函数中会使用和修改外部定义的变量 x, y, sx, sy, t。ans 0初始化一个变量 ans 来统计遇到的 1 的数量。 while t 0:进入一个 while 循环循环的条件是 t 0。每次循环代表一次时间步长直到 t 减少为负值为止。 if matrix[y][x] 1:ans 1在当前的坐标 (x, y) 位置检查矩阵中的字符是否为 1。如果是 1就将 ans 加 1表示遇到一个目标。 y syx sx更新当前坐标 (x, y) y sy垂直坐标 y 按照垂直速度 sy 更新向上或向下移动。x sx水平坐标 x 按照水平速度 sx 更新向左或向右移动。 if x 0:x 1sx -sxelif x w:x w - 2sx -sx处理水平边界 如果 x 0即移动超出了左边界则将 x 设置为 1并反转水平速度 sx即使得物体开始向右移动。如果 x w即移动超出了右边界则将 x 设置为 w - 2确保物体不再越过边界并反转水平速度 sx即物体开始向左移动。 if y 0:y 1sy -syelif y h:y h - 2sy -sy处理垂直边界 如果 y 0即移动超出了上边界则将 y 设置为 1并反转垂直速度 sy即物体开始向下移动。如果 y h即移动超出了下边界则将 y 设置为 h - 2确保物体不再越过边界并反转垂直速度 sy即物体开始向上移动。 t - 1每次循环后减少 t表示已经消耗了一个时间步。 3. 返回结果 return ans当时间步数 t 用完时返回统计的结果 ans即物体经过的 1 的总数。 4. 算法调用部分 print(getResult())调用 getResult() 函数并打印返回的结果输出遇到的 1 的数量。 完整工作流程 输入数据 程序首先从用户输入中读取矩阵的尺寸、起始位置、速度和最大时间步数。然后读取矩阵的内容每个字符代表矩阵中的一部分。 模拟运动 在矩阵中从起始位置 (x, y) 开始按照给定的速度 sx 和 sy 移动。每一步移动后检查当前位置是否是 1如果是则增加 ans 计数。碰到矩阵边界时会反转运动方向继续在矩阵中反弹。 返回结果 当经过所有时间步 t 后返回统计的 1 数量。 示例说明 假设输入如下 5 5 0 0 1 1 10 00000 00000 00100 00000 00000w 5, h 5矩阵的宽度和高度是 5。x 0, y 0起始位置在矩阵的左上角。sx 1, sy 1每次水平方向和垂直方向都移动 1 步。t 10模拟 10 步。 矩阵如下 00000 00000 00100 00000 00000运行过程 从起始位置 (0, 0) 开始向右向下移动。第 3 步时物体移动到 (2, 2)矩阵位置是 1计数器 ans 加 1。随后物体反弹继续移动直到时间步数 t 结束。 输出结果 1总结 这段代码通过模拟一个物体在矩阵中的移动并根据碰到的 1 进行计数最终输出物体经过的 1 的个数。关键的技术点包括边界检测和反弹的处理每次越界时反转方向确保物体不超出矩阵的范围。 五、C/C算法源码 模拟了一个物体在矩阵中按指定的速度移动并统计它经过的 1 的数量。我们将逐步讲解每个部分并转换为 C 版本。 C 语言代码转换为 C 代码 1. C 语言代码部分 #include stdio.h#define MAX_SIZE 100int main() {int w, h, x, y, sx, sy, t;scanf(%d %d %d %d %d %d %d, w, h, x, y, sx, sy, t);getchar();char matrix[MAX_SIZE][MAX_SIZE];for (int i 0; i h; i) {gets(matrix[i]);}int ans 0;while (t 0) {// 注意本题横纵坐标是反的因此y其实是行号x是列号if (matrix[y][x] 1) {ans;}y sy;x sx;if (x 0) {x 1;sx -sx;} else if (x w) { // 注意本题横纵坐标是反的因此x是列号w是矩阵列数x w - 2;sx -sx;}if (y 0) {y 1;sy -sy;} else if (y h) { // 注意本题横纵坐标是反的因此y是行号h是矩阵行数y h - 2;sy -sy;}t--;}printf(%d\n, ans);return 0; }转换为 C 代码 在 C 中我们通常使用 iostream 来替代 stdio.h 来进行输入输出使用 std::vector 或 std::string 来管理矩阵而不是固定大小的数组。我们还要避免使用 gets()因为它已经被废弃。我们改为使用 std::cin 和 std::getline() 来读取输入。 C 代码 #include iostream #include vector #include string#define MAX_SIZE 100using namespace std;int main() {int w, h, x, y, sx, sy, t;// 读取矩阵的宽度、高度、起始位置、速度和时间cin w h x y sx sy t;cin.ignore(); // 读取整行数据时忽略前面换行符vectorstring matrix(h); // 使用 string 类型的 vector 存储每行的矩阵for (int i 0; i h; i) {getline(cin, matrix[i]); // 读取每行矩阵}int ans 0;while (t 0) {// 检查当前位置是否是 1if (matrix[y][x] 1) {ans;}// 更新当前位置y sy;x sx;// 水平方向越界检测if (x 0) {x 1;sx -sx;} else if (x w) {x w - 2;sx -sx;}// 垂直方向越界检测if (y 0) {y 1;sy -sy;} else if (y h) {y h - 2;sy -sy;}t--; // 每次模拟步数减 1}cout ans endl; // 输出遇到的 1 的数量return 0; }详细注释和讲解 1. 输入处理 cin w h x y sx sy t; cin.ignore();cin w h x y sx sy t;通过 cin 从标准输入读取 7 个整数分别代表矩阵的宽度 w、高度 h起始位置 (x, y)水平速度 sx垂直速度 sy以及最大时间步数 t。cin.ignore();在读取完整数后使用 cin.ignore() 忽略掉换行符防止在读取矩阵时受到干扰。 2. 矩阵输入 vectorstring matrix(h); for (int i 0; i h; i) {getline(cin, matrix[i]); }vectorstring matrix(h);使用 vectorstring 来存储矩阵h 表示矩阵的行数。getline(cin, matrix[i]);每行输入用 getline 来读取。getline 读取一整行并存储为字符串。 3. 变量初始化 int ans 0;ans 用来统计经过的 1 的数量初始值为 0。 4. 模拟过程 while (t 0) {if (matrix[y][x] 1) {ans;}y sy;x sx;if (x 0) {x 1;sx -sx;} else if (x w) {x w - 2;sx -sx;}if (y 0) {y 1;sy -sy;} else if (y h) {y h - 2;sy -sy;}t--; }while (t 0)每次循环代表一个时间步直到 t 小于 0 为止。if (matrix[y][x] 1) { ans; }检查当前坐标 (x, y) 是否为 1如果是则 ans 增加 1。y sy; x sx;更新当前位置 (x, y)根据水平速度 sx 和垂直速度 sy 移动。边界检测 水平方向如果 x 0表示超出了左边界则将 x 设置为 1并反转水平速度 sx如果 x w表示超出了右边界则将 x 设置为 w - 2并反转水平速度 sx。垂直方向如果 y 0表示超出了上边界则将 y 设置为 1并反转垂直速度 sy如果 y h表示超出了下边界则将 y 设置为 h - 2并反转垂直速度 sy。 每次时间步结束后t--。 5. 输出结果 cout ans endl;输出统计到的 ans即遇到的 1 的数量。 总结 本代码模拟了一个物体在一个矩阵中按照给定的速度进行移动并统计物体经过的 1 数量。使用 vectorstring 存储矩阵内容避免了固定大小数组的限制同时也更方便处理动态大小的矩阵。边界检测和反弹处理确保物体在矩阵边缘反弹而不是超出边界。最后通过 cout 输出遇到的 1 的总数。 示例输入输出 输入 5 5 0 0 1 1 10 00000 00000 00100 00000 00000输出 1六、尾言 什么是华为OD 华为ODOutsourcing Developer外包开发工程师是华为针对软件开发工程师岗位的一种招聘形式主要包括笔试、技术面试以及综合面试等环节。尤其在笔试部分算法题的机试至关重要。 为什么刷题很重要 机试是进入技术面的第一关 华为OD机试常被称为机考主要考察算法和编程能力。只有通过机试才能进入后续的技术面试环节。 技术面试需要手撕代码 技术一面和二面通常会涉及现场编写代码或算法题。面试官会注重考察候选人的思路清晰度、代码规范性以及解决问题的能力。因此提前刷题、多练习是通过面试的重要保障。 入职后的可信考试 入职华为后还需要通过“可信考试”。可信考试分为三个等级 入门级主要考察基础算法与编程能力。工作级更贴近实际业务需求可能涉及复杂的算法或与工作内容相关的场景题目。专业级最高等级考察深层次的算法以及优化能力与薪资直接挂钩。 刷题策略与说明 2024年8月14日之后华为OD机试的题库转为 E卷由往年题库D卷、A卷、B卷、C卷和全新题目组成。刷题时可以参考以下策略 关注历年真题 题库中的旧题占比较大建议优先刷历年的A卷、B卷、C卷、D卷题目。对于每道题目建议深度理解其解题思路、代码实现以及相关算法的适用场景。 适应新题目 E卷中包含全新题目需要掌握全面的算法知识和一定的灵活应对能力。建议关注新的刷题平台或交流群获取最新题目的解析和动态。 掌握常见算法 华为OD考试通常涉及以下算法和数据结构 排序算法快速排序、归并排序等动态规划背包问题、最长公共子序列等贪心算法栈、队列、链表的操作图论最短路径、最小生成树等滑动窗口、双指针算法 保持编程规范 注重代码的可读性和注释的清晰度。熟练使用常见编程语言如C、Java、Python等。 如何获取资源 官方参考 华为招聘官网或相关的招聘平台会有一些参考信息。华为OD的相关公众号可能也会发布相关的刷题资料或学习资源。 加入刷题社区 找到可信的刷题交流群与其他备考的小伙伴交流经验。关注知名的刷题网站如LeetCode、牛客网等这些平台上有许多华为OD的历年真题和解析。 寻找系统性的教程 学习一本经典的算法书籍例如《算法导论》《剑指Offer》《编程之美》等。完成系统的学习课程例如数据结构与算法的在线课程。 积极心态与持续努力 刷题的过程可能会比较枯燥但它能够显著提升编程能力和算法思维。无论是为了通过华为OD的招聘考试还是为了未来的职业发展这些积累都会成为重要的财富。 考试注意细节 本地编写代码 在本地 IDE如 VS Code、PyCharm 等上编写、保存和调试代码确保逻辑正确后再复制粘贴到考试页面。这样可以减少语法错误提高代码准确性。 调整心态保持冷静 遇到提示不足或实现不确定的问题时不必慌张可以采用更简单或更有把握的方法替代确保思路清晰。 输入输出完整性 注意训练和考试时都需要编写完整的输入输出代码尤其是和题目示例保持一致。完成代码后务必及时调试确保功能符合要求。 快捷键使用 删除行可用 CtrlD复制、粘贴和撤销分别为 CtrlCCtrlVCtrlZ这些可以正常使用。避免使用 CtrlS以免触发浏览器的保存功能。 浏览器要求 使用最新版的 Google Chrome 浏览器完成考试确保摄像头开启并正常工作。考试期间不要切换到其他网站以免影响考试成绩。 交卷相关 答题前务必仔细查看题目示例避免遗漏要求。每完成一道题后点击【保存并调试】按钮多次保存和调试是允许的系统会记录得分最高的一次结果。完成所有题目后点击【提交本题型】按钮。确保在考试结束前提交试卷避免因未保存或调试失误而丢分。 时间和分数安排 总时间150 分钟总分400 分。试卷结构2 道一星难度题每题 100 分1 道二星难度题200 分。及格分为 150 分。合理分配时间优先完成自己擅长的题目。 考试环境准备 考试前请备好草稿纸和笔。考试中尽量避免离开座位确保监控画面正常。如需上厕所请提前规划好时间以减少中途离开监控的可能性。 技术问题处理 如果考试中遇到断电、断网、死机等技术问题可以关闭浏览器并重新打开试卷链接继续作答。出现其他问题请第一时间联系 HR 或监考人员进行反馈。 祝你考试顺利取得理想成绩
http://www.dnsts.com.cn/news/6705.html

相关文章:

  • 网站添加icp信息wordpress网站更改主题信息
  • asp网站设置用卫生纸做的礼物街网站
  • 做销售的什么网站好管理系统开发项目
  • 如何建网站和推广wordpress被刷搜索
  • 林业网站模板asp.net mvc5网站开发之美 pdf
  • 织梦网站被做跳转有做挂名法人和股东的网站吗
  • 一个网站后台怎么做中国品牌装修公司排名
  • 如何建微网站《工程建设》官方网站
  • 湖北网站建设公司wordpress内容付费插件
  • Wordpress在中国建站建设网站长沙
  • 中小学智慧校园建设平台网站网站语言有几种
  • 江夏网站建设mongo wordpress
  • 做网站的费用的会计分录京东商城官方旗舰店
  • 南昌网站关键词推广网站首页布局设计原理
  • 我的网站域名帝国行业网站模板
  • 经典企业网站模板扬州城乡建设局网站
  • 利用对象储存做网站旅游攻略的网站怎么做
  • 咸阳做网站价格西城做网站公司
  • 深圳企业模板网站建设wordpress文章分栏
  • 网站备案需要关闭建设一个教程视频网站需要什么资质
  • 炫彩发光字制作网站王建设医生网站
  • 销售网站开发步骤网站改版建设,有哪些内容
  • 做网站内容软件网站模板框架
  • 推广网站技巧设计师网络称呼
  • 做网站的时候怎么照片路径wordpress 线条不显示不出来
  • 小企业网站建设流程专门做美食的网站
  • c2c模式的典型网站怎么做短链接网站
  • 北京信管局 网站备案wordpress移动
  • 做网站用什么语言简单郴州刚刚发生的事
  • 建设网站价格推广手机卡返佣平台