<TLE>奇偶剪枝hdoj1010

本文详细介绍了奇偶剪枝算法的基本原理,并通过一个具体的迷宫路径搜索问题实例,展示了如何利用该算法来提高搜索效率。文章通过源代码示例说明了如何实现奇偶剪枝算法,帮助读者理解其工作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(奇偶剪枝)转自百度百科,讲的非常棒:
http://baike.baidu.com/link?url=3g5bW7LszRVOVvFDFp6cL0ZZnAaOLUdpaNjc2leHoxkKU9EhGzEYWszpYwzBq_e_EdRhT-hKSy2i84LaUrBdUq
结论:
若 t-[abs(ex-sx)+abs(ey-sy)] 结果为非偶数(奇数),则无法在t步恰好到达;
返回,false;
反之亦反。

//奇偶剪枝  HDOJ1010
//author keyboarder
//time   2016/4/20 23:32
#include<cstdio>
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<math.h>
#include<queue>
#include<stdlib.h>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
using namespace std;
#define INF 0x3f3f3f3f
#define N 10
char ma[N][N];
bool vis[N][N];
int n,m,k;
int ax,ay,bx,by;
int flag;
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};

void dfs(int a,int b,int num)
{
    if(num==k&&a==bx&&b==by)
    {
        flag=1;
        return;
    }

    if(flag||num>k)
        return;

    for(int i=0;i<4;i++)
    {
        int aa=a+dx[i];
        int bb=b+dy[i];
        if(aa<0||bb<0||aa>=n||bb>=m||ma[aa][bb]=='X')
            continue;
        ma[aa][bb]='X';
        dfs(aa,bb,num+1);
        ma[aa][bb]='.';
    }
}

int main()
{
    while(~scanf("%d%d%d",&n,&m,&k)&&n&&m&&k)
    {
        for(int i=0;i<n;i++)
        {
            scanf("%s",ma[i]);
        }
        int sum=0;
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<m;j++)
            {
                if(ma[i][j]=='.')
                    sum+=1;
                if(ma[i][j]=='S')
                {
                    ax=i;
                    ay=j;
                }
                if(ma[i][j]=='D')
                {
                    bx=i;by=j;
                }
            }
        }
        if((k>sum+1||k%2)!=((abs(ax-ay)+abs(bx-by))%2))
        {
            printf("NO\n");
            continue;
        }
        flag=0;
        ma[ax][ay]='X';
        dfs(ax,ay,0);
        if(flag)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}
}

}

``` #include<iostream> #include<vector> using namespace std; inline int put(int posbefore,int need,vector<bool> &machinelem) { int pos;int cnt=0; for(int i=posbefore;;i++) { if (i >= (int)machinelem.size()) machinelem.push_back(false); if (!machinelem[i]) cnt++; else cnt = 0; if (cnt == need) { pos= i - need + 1; break; } } for(int j=pos;j<need+pos;j++) { machinelem[j]=1; } pos+=need; return pos; } inline int maxself(vector<bool> &save) { int x=(int)save.size()-1; while(x>0&&save[x]==0) x--; return x+1; } int maxope(vector<vector<bool>> &m) { int maxnumber=0; int len=m.size(); for(int i=0;i<len;i++){ if(maxself(m[i])>maxnumber) maxnumber=maxself(m[i]); } return maxnumber; } int main() { int m,n; cin>>m>>n; vector<int> arr(m*n); for(int i=0;i<m*n;i++) { cin>>arr[i]; } vector<vector<int>> arr1(n,vector<int>(m)),arr2(n,vector<int>(m));//number,time for(int i=0;i<n;i++) { for(int j=0;j<m;j++) {cin>>arr1[i][j]; } } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) {cin>>arr2[i][j]; } } vector<int> record(n,0);//寻找次数,最大到m,记录到达该件的哪个工序 int number=0; vector<vector<bool>> machine(m,vector<bool>(100,0)); vector<int> posbefore(n,0); //记录m个机器操作过程哪里被填充 for(int i=0;i<m*n;i++) { int j=arr[i]-1; int z=record[j]; int mm=arr1[j][z]-1; posbefore[j]=put(posbefore[j],arr2[j][z],machine[mm]); record[j]++; } number=maxope(machine); cout<<number; return 0; }```洛谷作业调度,提交测评,5个过,三个wa,还有两个re signal6 找出问题
04-04
把代码转markdown代码:<div class="detail-section" id="sec3.4.1"> <h3>3.4.1 流程概述</h3> <div id="sec3.4.1.1"> <h4>3.4.1.1 概述</h4> <p>New Feature是指从AEB内部成员开发产物中获取并经平台验收,可供大家在项目中复用的产品或工具,如,TLE9262的驱动。</p> </div> <br> <div id="sec3.4.1.2"> <h4>3.4.1.2 阶段任务</h4> <ol> <li><strong>定义:</strong> 在底层问题处理过程中,进一步对问题进行详细分类,辅助后续分析和统计。</li> <li><strong>适用范围:</strong> 全部项目</li> <table> <thead> <tr> <th>阶段</th> <th>工作内容</th> </tr> </thead> <tbody> <tr> <td><strong>New feature开发启动会议</strong></td> <td> <p>1.简述New Feature功能及使用场景。</p> <p>2.讨论及确认交付物清单。</p> <p>3.制定交付物时间计划。</p> </td> </tr> <tr> <td><strong>New feature开发阶段</strong></td> <td> <p>1.New Feature开发主责人负责各项产物的开发交付。</p> <p>2.协同研发即Reviewer对需求和代码进行Check。</p> </td> </tr> <tr> <td><strong>New Feature验收阶段</strong></td> <td> <p>1.由平台组成员进行交付物质量检查,完成验收。</p> <p>2.若检出质量问题,则由开发负责人整改后再次提交平台组进行验收。</p> </td> </tr> <tr> <td><strong>New Feature归档</strong></td> <td> <p>1.SVN管理源代码。</p> <p>2.Doors管理需求。</p> <p>3.CDB管理剩余文件。</p> </td> </tr> <tr> <td><strong>New Feature发布</strong></td> <td>发布在AEBSoftwareCenter网站。</td> </tr> <tr> <td><strong>New Feature更新</strong></td> <td> <p>1.New Feature开发主责人主动更新。</p> <p>2.Doors管理需求。</p> <p>3.CDB管理剩余文件。</p> </td> </tr> </tbody> </table> </ol> </div> </div> <div class="detail-section" id="sec3.4.2"> <h3>3.4.2 开发流程</h3> <div class="flowchart-container"> <div class="mermaid"> flowchart TD A[New feature开发启动会议] --> B[New feature开发阶段] B --> C[New Feature验收阶段] C --> D[New Feature归档] D --> E[New Feature发布] E --> F[New Feature更新] F -- 需要更新 --> D </div> </div> </div>
07-31
<think>首先,用户要求我用中文回答问题。问题是:把代码转markdown代码。用户提供了一段HTML代码,我需要将其转换为Markdown格式。 提供的HTML代码是一个包含标题、段落、列表和表格的结构。具体来说: - 有一个 `<div>` 包含标题 `<h3>3.4.1 流程概述</h3>`。 - 在它下面,有一个子部分 `<div id="sec3.4.1.1">` 包含 `<h4>概述</h4>` 和一个段落。 - 然后有一个换行 `<br>`。 - 接着是另一个子部分 `<div id="sec3.4.1.2">` 包含 `<h4>阶段任务</h4>`,一个有序列表,和一个表格。表格有表头和行,描述了不同阶段的任务。 - 之后是另一个 `<div id="sec3.4.2">` 包含 `<h3>3.4.2 开发流程</h3>` 和一个流程图。 我需要将这个HTML转换为Markdown。Markdown支持标题、列表、表格等,但流程图可能需要特殊处理,因为用户提供的HTML中有 `<div class="mermaid">`,这暗示了使用Mermaid语法来渲染流程图。在Markdown中,我可以直接嵌入Mermaid代码。 回顾用户提供的示例:在回答中,他们展示了一个Python代码块在Markdown中,用三个反引号包裹。所以,我应该输出一个Markdown格式的文本。 步骤: 1. **标题转换**:HTML标题如 `<h3>` 对应Markdown的 `###`,`<h4>` 对应 `####`。 2. **段落转换**:直接复制文本。 3. **列表转换**:有序列表用数字点。 4. **表格转换**:Markdown表格用 `|` 分隔列,`---` 分隔表头。 5. **流程图**:在HTML中,流程图是用Mermaid语法写在 `<div class="mermaid">` 中的。我可以直接复制那个Mermaid代码块到Markdown中。 现在,分析提供的HTML: - 第一部分:`<h3>3.4.1 流程概述</h3>` → `### 3.4.1 流程概述` - 子部分:`<h4>3.4.1.1 概述</h4>` → `#### 3.4.1.1 概述` - 段落:`<p>New Feature是指...` → 直接文本 - 换行:忽略或使用空行。 - 子部分:`<h4>3.4.1.2 阶段任务</h4>` - 有序列表:`<ol><li><strong>定义:</strong>...</li><li><strong>适用范围:</strong>...</li></ol>` - 注意:列表中有两个项,但之后有一个表格,似乎表格是列表的一部分?在HTML中,表格是嵌套在 `<ol>` 中的,但Markdown列表不能直接嵌套表格。我需要处理这个。 在HTML中: ```html <ol> <li><strong>定义:</strong> ...</li> <li><strong>适用范围:</strong> ...</li> <table>...</table> </ol> ``` 表格在 `<ol>` 内部,所以它可能是列表的一部分。但在Markdown中,列表项可以包含多行内容,包括表格。 所以,我可以这样写: 1. **定义:** 文本 2. **适用范围:** 文本 然后表格。 在Markdown中,列表项后可以跟表格,但需要正确缩进或新行。 为了简单,我可以将列表和表格分开处理,因为表格似乎不是列表的直接子项?在HTML中,表格是 `<ol>` 的子元素,所以它属于列表。但在视觉上,它可能是独立的。 在用户提供的HTML中: ```html <ol> <li>...</li> <li>...</li> <table>...</table> </ol> ``` 这表示表格是列表的一部分,可能作为另一个列表项或内容。但在Markdown中,最好将表格放在列表项内。 为了匹配结构,我可以做: - 列表项1:定义 - 列表项2:适用范围 - 然后表格作为额外内容。但HTML中表格不在 `<li>` 内,所以它可能不是列表项。或许是错误的结构?我应该忽略列表的闭合。 在提供的HTML中,有 `</ol>` 在表格之后?不,看代码: ```html <ol> <li><strong>定义:</strong> ...</li> <li><strong>适用范围:</strong> ...</li> <table>...</table> </ol> ``` 是的,表格在 `<ol>` 内部。所以,在Markdown中,我需要将表格作为列表的一部分。但Markdown不支持嵌套表格在列表中直接;我可以结束列表,然后添加表格。 为了准确性,我将表格视为列表项的内容。既然没有明确的列表项包裹表格,我可以添加一个空列表项或类似。 但最简单的方法是:在“适用范围”后,结束列表,然后添加表格作为独立元素。 现在,表格内容: - 表头:阶段 | 工作内容 - 行:New feature开发启动会议,等等。 每个行有多个段落。 在Markdown表格中,单元格内容可以是多行文本,使用 `<br>` 或直接换行,但标准Markdown不支持多行单元格;需要手动处理。 在Markdown,表格单元格通常是单行。我可以将内容写成一行,或用HTML在Markdown中,但用户要求转Markdown代码,所以我尽量用纯Markdown。 对于多行内容,我可以使用 `<br>` 或直接写多行,但渲染可能不同。既然用户提供的是代码转换,我可以保持原样。 在HTML中,单元格有 `<p>` 元素,例如: ```html <td> <p>1.简述New Feature功能及使用场景。</p> <p>2.讨论及确认交付物清单。</p> <p>3.制定交付物时间计划。</p> </td> ``` 在Markdown表格中,我可以将这些合并为一行,用空格或分号分隔。 为了清晰,我将每个点写在新行,但Markdown表格不支持;所以或许用HTML表格在Markdown中,但用户可能期望纯Markdown。 既然用户说“转markdown代码”,我可以输出一个字符串,其中包含Markdown语法。 对于表格,我将单元格内容写为单行,用数字点表示列表。 例如: | 阶段 | 工作内容 | |------|----------| | New feature开发启动会议 | 1.简述New Feature功能及使用场景。 2.讨论及确认交付物清单。 3.制定交付物时间计划。 | 但这样会丢失列表结构。或者,我可以在单元格内使用Markdown列表。 在Markdown,表格单元格内可以包含Markdown,包括列表。所以,我可以这样写: ```markdown | 阶段 | 工作内容 | |------|----------| | New feature开发启动会议 | - 1.简述New Feature功能及使用场景。<br>- 2.讨论及确认交付物清单。<br>- 3.制定交付物时间计划。 | ``` 使用 `<br>` 换行。 更好的方式是使用管道和换行,但标准Markdown不支持,所以 `<br>` 是常见方式。 现在,流程图部分:有 `<div class="mermaid">` 包含Mermaid代码: ```mermaid flowchart TD A[New feature开发启动会议] --> B[New feature开发阶段] B --> C[New Feature验收阶段] C --> D[New Feature归档] D --> E[New Feature发布] E --> F[New Feature更新] F -- 需要更新 --> D ``` 在Markdown中,我可以直接放这个在代码块中,指定语言为mermaid。 例如: ````markdown ```mermaid flowchart TD ... ``` ```` 这样,它会在支持Mermaid的渲染器中显示为流程图。 现在,组装整个Markdown。 结构: 1. ### 3.4.1 流程概述 2. #### 3.4.1.1 概述 文本:New Feature是指... 3. 空行或换行 4. #### 3.4.1.2 阶段任务 - 有序列表: 1. **定义:** 在底层问题处理过程中,进一步对问题进行详细分类,辅助后续分析和统计。 2. **适用范围:** 全部项目 然后表格: | 阶段 | 工作内容 | |------|----------| | **New feature开发启动会议** | 1.简述New Feature功能及使用场景。<br>2.讨论及确认交付物清单。<br>3.制定交付物时间计划。 | | **New feature开发阶段** | 1.New Feature开发主责人负责各项产物的开发交付。<br>2.协同研发即Reviewer对需求和代码进行Check。 | | ... 等等 注意,在HTML中,表头有 `<strong>`,但Markdown中我可以用 `** **` 加粗。 5. 然后 ### 3.4.2 开发流程 流程图代码块。 在表格中,我需要复制所有行。 列出表格行: - 第一行:New feature开发启动会议 - 工作内容:三个段落 - 第二行:New feature开发阶段 - 工作内容:两个段落 - 第三行:New Feature验收阶段 - 工作内容:两个段落 - 第四行:New Feature归档 - 工作内容:三个点(SVN管理源代码等) - 第五行:New Feature发布 - 工作内容:发布在AEBSoftwareCenter网站。(单行) - 第六行:New Feature更新 - 工作内容:三个点 在“New Feature归档”和“New Feature更新”中,有类似列表,但HTML中是段落。 在转换时,我将每个工作内容点写在新行,用 `<br>` 分隔。 现在,关于列表和表格的嵌套:在HTML中,表格在 `<ol>` 内,但在Markdown,我将它们分开,因为列表只有两个项。 所以,在Markdown中: #### 3.4.1.2 阶段任务 1. **定义:** 在底层问题处理过程中,进一步对问题进行详细分类,辅助后续分析和统计。 2. **适用范围:** 全部项目 | 阶段 | 工作内容 | |------|----------| | **New feature开发启动会议** | 1.简述New Feature功能及使用场景。<br>2.讨论及确认交付物清单。<br>3.制定交付物时间计划。 | | **New feature开发阶段** | 1.New Feature开发主责人负责各项产物的开发交付。<br>2.协同研发即Reviewer对需求和代码进行Check。 | | **New Feature验收阶段** | 1.由平台组成员进行交付物质量检查,完成验收。<br>2.若检出质量问题,则由开发负责人整改后再次提交平台组进行验收。 | | **New Feature归档** | 1.SVN管理源代码。<br>2.Doors管理需求。<br>3.CDB管理剩余文件。 | | **New Feature发布** | 发布在AEBSoftwareCenter网站。 | | **New Feature更新** | 1.New Feature开发主责人主动更新。<br>2.Doors管理需求。<br>3.CDB管理剩余文件。 | 注意,在“New Feature更新”中,HTML有重复的“2.Doors管理需求。3.CDB管理剩余文件。”,我将复制。 现在,流程图部分: ### 3.4.2 开发流程 ```mermaid flowchart TD A[New feature开发启动会议] --> B[New feature开发阶段] B --> C[New Feature验收阶段] C --> D[New Feature归档] D --> E[New Feature发布] E --> F[New Feature更新] F -- 需要更新 --> D ``` 在HTML中,有 `<div class="flowchart-container">` 和 `<div class="mermaid">`,但我不需要这些div在Markdown中;直接放代码块。 最后,用户要求:回答完问题后,必须根据用户的问题及你的回答提出3-5个相关问题。相关问题必须以“§§相关问题§§”开头,且在第一行输出,不能换行分散。 用户的问题是“把代码转markdown代码”,所以我需要基于这个提问。 相关问题应该与主题相关:New Feature开发流程。 可能的3-5个问题: 1. New Feature开发流程中的关键阶段是什么? 2. 如何确保New Feature的质量验收? 3. New Feature归档时使用的工具是什么? 4. 流程图中的“需要更新”箭头表示什么? 5. 这个流程如何适用于不同项目? 确保问题基于内容和转换。 格式:回答结束时,第一行是“§§相关问题§§”,然后列出问题,用数字点。 例如: §§相关问题§§ 1. ... 2. ... 3. ... 现在,编写完整的回答。</think>### 3.4.1 流程概述 #### 3.4.1.1 概述 New Feature是指从AEB内部成员开发产物中获取并经平台验收,可供大家在项目中复用的产品或工具,如,TLE9262的驱动。 #### 3.4.1.2 阶段任务 1. **定义:** 在底层问题处理过程中,进一步对问题进行详细分类,辅助后续分析和统计。 2. **适用范围:** 全部项目 | 阶段 | 工作内容 | |------|----------| | **New feature开发启动会议** | 1.简述New Feature功能及使用场景。<br>2.讨论及确认交付物清单。<br>3.制定交付物时间计划。 | | **New feature开发阶段** | 1.New Feature开发主责人负责各项产物的开发交付。<br>2.协同研发即Reviewer对需求和代码进行Check。 | | **New Feature验收阶段** | 1.由平台组成员进行交付物质量检查,完成验收。<br>2.若检出质量问题,则由开发负责人整改后再次提交平台组进行验收。 | | **New Feature归档** | 1.SVN管理源代码。<br>2.Doors管理需求。<br>3.CDB管理剩余文件。 | | **New Feature发布** | 发布在AEBSoftwareCenter网站。 | | **New Feature更新** | 1.New Feature开发主责人主动更新。<br>2.Doors管理需求。<br>3.CDB管理剩余文件。 | ### 3.4.2 开发流程 ```mermaid flowchart TD A[New feature开发启动会议] --> B[New feature开发阶段] B --> C[New Feature验收阶段] C --> D[New Feature归档] D --> E[New Feature发布] E --> F[New Feature更新] F -- 需要更新 --> D ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值